On Friday, 8 February 2019 at 04:30:23 UTC, Arun Chandrasekaran
wrote:
On Friday, 8 February 2019 at 04:13:39 UTC, Sudhi wrote:
I have a situation, where i want to modify a shared variable
in a function. Something like below
struct Company
{
string name;
string location;
}
struct Racks
{
int number;
int location;
}
struct Metadata
{
string name;
Company[] companies;
Racks[] racks;
}
struct Item
{
Metadata met;
int count;
}
shared (Item) item
void main()
{
updateMetadata()
}
void updateMetadata()
{
Company company;
company.name = "Hello";
company.location = "Bangalore";
item.met.companies ~= company;
}
Compiler throws me error in last line for appending as below.
"cannot append type Metadata to type shared(Metadata[])".
Please let me know if there is a way to acheive this.
Thanks,
Sudhi
Works fine for me with DMD64 D Compiler v2.083.1.
https://run.dlang.io/is/RRM8GU
My example code was wrong. Below is the right one.
struct Company
{
string name;
string location;
}
struct Racks
{
int number;
int location;
}
struct Metadata
{
string name;
Company[] companies;
Racks[] racks;
}
struct Item
{
Metadata[] met;
int count;
}
shared (Item) item;
void main()
{
updateMetadata();
}
void updateMetadata()
{
Company company;
company.name = "Hello";
company.location = "Bangalore";
item.met.companies ~= company;
import std.stdio: writeln;
writeln(item);
}
https://run.dlang.io/is/iem0PY