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

Reply via email to