کتابخانه‌ی استاندارد · کدگذاری و داده

مقدار encoding/value

مقدار پویا برای داده‌ای که شکلش را از پیش نمی‌دانید؛ زبان مشترک همه‌ی قالب‌های این گروه.

واردسازی کدگذاری.مقدار

وقتی جیسونی را می‌خوانید که شکلش را از پیش نمی‌دانید، نمی‌شود آن را در یک ساختار ثابت ریخت. مقدار برای همین است: هر مقدار نوعش را با خودش دارد و می‌تواند آرایه یا شیئی از مقدارهای دیگر باشد.

جیسون، یامل، تامل، مسج‌پک، سی اس وی و اکس‌ام‌ال همه می‌توانند به مقدار تبدیل شوند و از آن ساخته شوند؛ بسته‌ی تبدیل قالب از همین برای تبدیل قالب‌ها به یکدیگر استفاده می‌کند.

گونه‌ها

مقدار Value

ساختار مقدار
یک مقدار پویا: تهی، منطقی، صحیح، اعشاری، رشته، آرایه یا شیء.
نامانگلیسیگونهتوضیح
kindkindصحیحنوع مقدار؛ یکی از ثابت‌های نوع.
bbمنطقی = نادرستمقدار منطقی.
iiصحیح۶۴ = 0مقدار صحیح.
nnاعشار۶۴ = 0مقدار اعشاری.
ssرشته = ""مقدار رشته.
arrarrوکتور<مقدار>عضوهای آرایه.
objobjنگاشت<رشته، مقدار>کلیدها و مقدارهای شیء.
encoding-value-Value.salam
واردسازی کدگذاری.مقدار

روال ریشه:
    ناپایا کاربر := مقدار.شیء جدید()
    مقدار.تنظیم کلید(کاربر، "name"، مقدار.مقدار رشته("نرگس"))
    مقدار.تنظیم کلید(کاربر، "age"، مقدار.مقدار صحیح(۳۴))
    مقدار.تنظیم کلید(کاربر، "height"، مقدار.مقدار اعشاری(۱.۶۸))
    مقدار.تنظیم کلید(کاربر، "admin"، مقدار.مقدار منطقی(نادرست))
    مقدار.تنظیم کلید(کاربر، "phone"، مقدار.مقدار تهی())
    ناپایا زبان‌ها := مقدار.آرایه جدید()
    مقدار.افزودن به آرایه(زبان‌ها، مقدار.مقدار رشته("fa"))
    مقدار.افزودن به آرایه(زبان‌ها، مقدار.مقدار رشته("en"))
    مقدار.تنظیم عضو آرایه(زبان‌ها، ۱، مقدار.مقدار رشته("ar"))
    مقدار.تنظیم کلید(کاربر، "langs"، زبان‌ها)
    سرچاپ مقدار.رشته اشکال زدایی(کاربر)
    سرچاپ مقدار.طول شیء(کاربر)، مقدار.شیء دارد(کاربر، "age")، مقدار.کلیدهای شیء(کاربر)
    سرچاپ مقدار.به رشته(مقدار.مقدار کلید(کاربر، "name"))، مقدار.به صحیح(مقدار.مقدار کلید(کاربر، "age"))، مقدار.به اعشاری(مقدار.مقدار کلید(کاربر، "height"))، مقدار.به منطقی(مقدار.مقدار کلید(کاربر، "admin"))
    ز := مقدار.مقدار کلید(کاربر، "langs")
    سرچاپ مقدار.آرایه است(ز)، مقدار.طول آرایه(ز)، مقدار.به رشته(مقدار.عضو آرایه(ز، ۱))
    ناپایا هست := نادرست
    _ := مقدار.مقدار کلید با وضعیت(کاربر، "email"، هست)
    سرچاپ هست
    ت := مقدار.مقدار کلید(کاربر، "phone")
    سرچاپ مقدار.تهی است(ت)، مقدار.منطقی است(ت)، مقدار.صحیح است(مقدار.مقدار صحیح(۱))، مقدار.اعشاری است(مقدار.مقدار اعشاری(۱.۰))، مقدار.عدد است(مقدار.مقدار صحیح(۱))
    سرچاپ مقدار.رشته است(مقدار.مقدار رشته(""))، مقدار.شیء است(کاربر)، ت.kind == مقدار.نوع تهی، مقدار.نوع شیء
    ناپایا ک := مقدار.رونوشت مقدار(کاربر)
    سرچاپ مقدار.یکسان است(ک، کاربر)
    حذف شد := مقدار.حذف کلید(ک، "phone")
    سرچاپ حذف شد، مقدار.یکسان است(ک، کاربر)
    ناپایا عددها := وکتور {} برگردان وکتور<مقدار.مقدار>
    عددها.بیفزا(مقدار.مقدار صحیح(۱))
    ناپایا فیلدها := نگاشت {} برگردان نگاشت<رشته، مقدار.مقدار>
    فیلدها.درج("x"، مقدار.مقدار آرایه(عددها))
    سرچاپ مقدار.رشته اشکال زدایی(مقدار.مقدار شیء(فیلدها))
    مقدار.آزادسازی مقدار(ک)
پایان
خروجیobject{name: string(نرگس), height: float(1.68), age: int(34), admin: bool(false), langs: array[string(fa), string(ar)], phone: null} 6 true ["name", "height", "age", "admin", "langs", "phone"] نرگس 34 1.68 false true 2 ar false true false true true true true true true 6 true true false object{x: array[int(1)]}

پایاها و متغیرها

نوع تهی KindNull

پایا نوع تهی: صحیح۳۲ = 0
تهی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

نوع منطقی KindBool

پایا نوع منطقی: صحیح۳۲ = 1
منطقی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

نوع صحیح KindInt

پایا نوع صحیح: صحیح۳۲ = 2
صحیح.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

نوع اعشاری KindFloat

پایا نوع اعشاری: صحیح۳۲ = 3
اعشاری.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

نوع رشته KindString

پایا نوع رشته: صحیح۳۲ = 4
رشته.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

نوع آرایه KindArray

پایا نوع آرایه: صحیح۳۲ = 5
آرایه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

نوع شیء KindObject

پایا نوع شیء: صحیح۳۲ = 6
شیء.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

روال‌ها

رشته اشکال زدایی ToDebugString

روال رشته اشکال زدایی(v: مقدار): رشته
نمایش خوانا با نوع هر عضو، مثل object{name: string(علی)}؛ برای اشکال‌زدایی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

مقدار تهی ValueNull

روال مقدار تهی(): مقدار
مقدار تهی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

مقدار منطقی ValueBool

روال مقدار منطقی(b: منطقی): مقدار
مقدار منطقی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

مقدار صحیح ValueInt

روال مقدار صحیح(i: صحیح۶۴): مقدار
مقدار صحیح.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

مقدار اعشاری ValueFloat

روال مقدار اعشاری(n: اعشار۶۴): مقدار
مقدار اعشاری.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

مقدار رشته ValueString

روال مقدار رشته(s: رشته): مقدار
مقدار رشته.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

مقدار آرایه ValueArray

روال مقدار آرایه(items: وکتور<مقدار>): مقدار
آرایه از روی یک وکتور.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

مقدار شیء ValueObject

روال مقدار شیء(fields: نگاشت<رشته، مقدار>): مقدار
شیء از روی یک نگاشت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

آرایه جدید NewValueArray

روال آرایه جدید(): مقدار
آرایه‌ی خالی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

شیء جدید NewValueObject

روال شیء جدید(): مقدار
شیء خالی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

تهی است IsNull

روال تهی است(v: مقدار): منطقی
اگر مقدار تهی باشد، درست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

منطقی است IsBool

روال منطقی است(v: مقدار): منطقی
اگر منطقی باشد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

صحیح است IsInt

روال صحیح است(v: مقدار): منطقی
اگر صحیح باشد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

اعشاری است IsFloat

روال اعشاری است(v: مقدار): منطقی
اگر اعشاری باشد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

عدد است IsNumber

روال عدد است(v: مقدار): منطقی
اگر صحیح یا اعشاری باشد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

رشته است IsString

روال رشته است(v: مقدار): منطقی
اگر رشته باشد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

آرایه است IsArray

روال آرایه است(v: مقدار): منطقی
اگر آرایه باشد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

شیء است IsObject

روال شیء است(v: مقدار): منطقی
اگر شیء باشد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

به منطقی AsBool

روال به منطقی(v: مقدار): منطقی
مقدار منطقی؛ برای نوع‌های دیگر نادرست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

به صحیح AsInt

روال به صحیح(v: مقدار): صحیح۶۴
مقدار صحیح؛ اعشاری بریده می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

به اعشاری AsFloat

روال به اعشاری(v: مقدار): اعشار۶۴
مقدار اعشاری؛ صحیح تبدیل می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

به رشته AsString

روال به رشته(v: مقدار): رشته
مقدار رشته؛ برای نوع‌های دیگر رشته‌ی خالی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

طول آرایه ArrayLen

روال طول آرایه(v: مقدار): صحیح
تعداد عضوهای آرایه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

عضو آرایه ArrayGet

روال عضو آرایه(v: مقدار، i: صحیح): مقدار
عضو شماره‌ی i؛ شماره باید کمتر از طول آرایه باشد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

تنظیم عضو آرایه ArraySet

روال تنظیم عضو آرایه(v &: مقدار، i: صحیح، item: مقدار)
عضو شماره‌ی i را جایگزین می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

افزودن به آرایه ArrayPush

روال افزودن به آرایه(v &: مقدار، item: مقدار)
عضوی به انتهای آرایه اضافه می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

طول شیء ObjectLen

روال طول شیء(v: مقدار): صحیح
تعداد کلیدهای شیء.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

شیء دارد ObjectHas

روال شیء دارد(v: مقدار، key: رشته): منطقی
اگر کلید وجود داشته باشد، درست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

مقدار کلید ObjectGet

روال مقدار کلید(v: مقدار، key: رشته): مقدار
مقدار یک کلید؛ اگر نباشد، تهی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

مقدار کلید با وضعیت ObjectGetOk

روال مقدار کلید با وضعیت(v: مقدار، key: رشته، ok &: منطقی): مقدار
مقدار یک کلید، و در ok اینکه کلید بود یا نه؛ برای جدا کردن «نبود» از «تهی».

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

تنظیم کلید ObjectSet

روال تنظیم کلید(v &: مقدار، key: رشته، item: مقدار)
کلید را تنظیم می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

حذف کلید ObjectDelete

روال حذف کلید(v &: مقدار، key: رشته): منطقی
کلید را برمی‌دارد و می‌گوید وجود داشت یا نه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

کلیدهای شیء ObjectKeys

روال کلیدهای شیء(v: مقدار): وکتور<رشته>
کلیدهای شیء. ترتیب آن‌ها ثابت نیست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

رونوشت مقدار ValueClone

روال رونوشت مقدار(v: مقدار): مقدار
رونوشت کامل و مستقل مقدار.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

آزادسازی مقدار ValueFree

روال آزادسازی مقدار(v &: مقدار)
حافظه‌ی مقدار و عضوهایش را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam

یکسان است Equal

روال یکسان است(a: مقدار، b: مقدار): منطقی
اگر دو مقدار، با همه‌ی عضوهای تو‌در‌تو، برابر باشند، درست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-value-Value.salam