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

واکنشی gui.reactive

ویژگی‌های واکنشی برای رابط کاربری: پیوندهای تنبل با وابستگی خودکار، ردیاب، کنترل‌کننده‌ی تغییر، همبندی دوطرفه، گذار CSS و مدل فهرست.

واردسازی رابط گرافیکی.واکنشی

نام آرگومان‌ها شناسه‌ی خود کد است و معادل فارسی ندارد؛ گونه‌ها، کلیدواژه‌ها و نام بسته‌ها با معادل فارسی نوشته می‌شوند.

واکنشی زمان اجرای وضعیت در رابط کاربری بومی سلام است و از سامانه‌ی ویژگی Slint الگو گرفته است. هر مقداری که عوض می‌شود یک ویژگی است. ویژگی یا مقداری نگه می‌دارد یا پیوندی دارد، یعنی تابعی که آن را از ویژگی‌های دیگر حساب می‌کند. خواندن یک ویژگی درون پیوند خودبه‌خود وابستگی ثبت می‌کند، پس چیزی را نباید اعلام کرد.

کار دو نیمه دارد. بنشان فقط مقایسه می‌کند، مقدار را می‌گذارد و وابسته‌ها را کهنه می‌کند و در گره‌های از پیش کهنه می‌ایستد. آن لحظه چیزی حساب نمی‌شود: پیوند کهنه در خواندن بعدی اجرا می‌شود، وابستگی‌های قبلی را فراموش می‌کند و وابستگی‌های تازه را ثبت می‌کند، پس پیوندی که اگر دارد فقط به شاخه‌ای که رفت وابسته است.

چند نکته:

  • دستگیره‌ها مقدارهای کوچک‌اند. ویژگی‌صحیح، ویژگی‌متنی و بقیه شماره‌ای در زمان اجرا نگه می‌دارند، پس لامبدایی که یکی را با مقدار بگیرد باز هم ویژگی زنده را می‌بیند. ثابتی که با صحیح ثابت و مانندهایش ساخته شود مقدارش را در خود دستگیره دارد و در زمان اجرا هزینه‌ای ندارد.
  • نشاندن ویژگی پیوندی پیوند را برمی‌دارد، همان‌طور که مقداردهی در Slint. برای مقداری که دو جا ویرایشش می‌کنند از همبند کن استفاده کنید.
  • متن قاعده‌ی مالکیت دارد. بخوان روی ویژگی‌متنی رشته‌ای برمی‌گرداند که مال ویژگی است و تا تغییر مقدار معتبر است. پیوند مالک رشته‌ی تازه‌ای می‌شود که تابعش برمی‌گرداند؛ پیوند رونوشتی آن را کپی می‌کند، برای متن ثابت و متن ویژگی‌های دیگر.
  • کنترل‌کننده‌ی تغییر هرگز درون نشاندن اجرا نمی‌شود. هنگام تغییر آن را صف می‌کند، حلقه‌ی رویداد اجرای کنترل‌کننده ها را صدا می‌زند و چند تغییر یک اجرا می‌دهد.
  • حلقه‌ی پیوند گزارش می‌شود، با نام ویژگی‌ها، مثلاً binding loop: 'min width' -> 'preferred width' -> 'min width'، به جای سرریز پشته. با نام بده ویژگی‌ها را نام‌گذاری کنید تا گزارش خوانا باشد.
  • زمان اجرا برای یک نخ است، نخ رابط کاربری. لامبدایی که متغیری را بگیرد محیطش را تا پایان برنامه نگه می‌دارد، پس پیوندهایی که برای هر سطر یک فهرست بلند ساخته می‌شوند بهتر است وضعیت سطح بسته را بخوانند تا اینکه چیزی بگیرند.

یک جزء شمارنده

جزئی که state count دارد به این تبدیل می‌شود. برچسب و پرچم wide پیوندهایی روی count هستند. یک ردیاب نماینده‌ی صفحه است: تابع کشیدن را اجرا می‌کند و تابع خبردهنده‌اش فقط یادداشت می‌کند که بازکشیدن لازم است. حلقه نقش حلقه‌ی رویداد را دارد: یک کلیک را پاسخ می‌دهد، کنترل‌کننده‌ها را اجرا می‌کند و هر جا خواسته شد بازمی‌کشد. سه کلیک با یک پرش به ۱۰ چهار کشیدن و سه ذخیره می‌دهد.

gui-reactive-guide-counter.salam
واردسازی رابط گرافیکی.واکنشی

ناپایا count := واکنشی.ویژگی‌صحیح {}
ناپایا label := واکنشی.ویژگی‌متنی {}
ناپایا wide := واکنشی.ویژگی‌منطقی {}
ناپایا needs_paint := نادرست

تابع paint():
    سرچاپ "  paint:"، label.بخوان()، wide.بخوان() ? "(wide)" : ""
پایان

تابع click():
    count.بنشان(count.نگاه() + 1)
پایان

تابع ریشه:
    count = واکنشی.صحیح تازه(0).نام بده("count")
    label = واکنشی.متن تازه("").نام بده("label")
    label.پیوند((): برگشت "Count: " + count.بخوان() پایان)
    wide = واکنشی.منطقی تازه(نادرست)
    wide.پیوند((): برگشت count.بخوان() بزرگتربرابر 10 پایان)
    screen := واکنشی.ردیابی((): paint() پایان، (): needs_paint = درست پایان)
    saved := واکنشی.هنگام تغییر(count، (): سرچاپ "  save"، count.بخوان() پایان)

    تکرار 3 در frame:
        click()
        اگر frame برابر 2:
            count.بنشان(10)
        پایان
        _n := واکنشی.اجرای کنترل‌کننده ها()
        اگر needs_paint:
            needs_paint = نادرست
            _r := screen.تازه کن()
        پایان
    پایان
    saved.آزاد کن()
    screen.آزاد کن()
پایان
خروجی paint: Count: 0 save 1 paint: Count: 1 save 2 paint: Count: 2 save 10 paint: Count: 10 (wide)

گذار CSS هنگام رفتن نشانگر روی عنصر

ویژگی پویانما با گذر زمان به هر مقدار تازه می‌رود. اینجا پس‌زمینه پیوندی روی hovered است که با ease-in-out در ۳۰۰ میلی‌ثانیه و برای هر کانال رنگ جدا پویانمایی می‌شود. هر فریم ساعت را با تنظیم زمان جلو می‌برد؛ ویژگی پویانما فقط تا وقتی در حرکت است به ساعت وابسته است و پویانمایی جاری به حلقه می‌گوید کی می‌تواند کشیدن را بس کند.

gui-reactive-guide-transition.salam
واردسازی تبدیل
واردسازی رابط گرافیکی.واکنشی

ناپایا hovered := واکنشی.ویژگی‌منطقی {}
ناپایا background := واکنشی.ویژگی‌صحیح {}
ناپایا dirty := نادرست

تابع show(ms: صحیح۶۴):
    c := ((background.بخوان() برگردان صحیح۶۴) & 0xFFFFFFFF) برگردان طبیعی۶۴
    سرچاپ "  t"، ms، "background"، تبدیل.قالب شانزده(c)
پایان

تابع ریشه:
    واکنشی.تنظیم زمان(0 برگردان صحیح۶۴)
    hovered = واکنشی.منطقی تازه(نادرست)
    background = واکنشی.صحیح تازه(0)
    background.پیوند((): برگشت hovered.بخوان() ? 0xFF3366CC برگردان صحیح : 0xFFFFFFFF برگردان صحیح پایان)
    background.پویانمایی(واکنشی.پویانمایی‌ویژگی { مدت = 300، نرمش = واکنشی.خواندن نرمش("ease-in-out"، واکنشی.نرمش عادی())، رنگی = درست })
    screen := واکنشی.ردیابی((): _c := background.بخوان() پایان، (): dirty = درست پایان)

    سرچاپ "pointer enters at 0 ms"
    hovered.بنشان(درست)
    ناپایا now := 0 برگردان صحیح۶۴
    تا واکنشی.پویانمایی جاری() یا dirty:
        اگر dirty:
            dirty = نادرست
            _r := screen.تازه کن()
            show(now)
        پایان
        now += 100
        واکنشی.تنظیم زمان(now)
    پایان
    سرچاپ "idle at"، now، "ms, running"، واکنشی.پویانمایی جاری()
    screen.آزاد کن()
پایان
خروجیpointer enters at 0 ms t 0 background ffffffff t 100 background ffd0dcf3 t 200 background ff6289d8 t 300 background ff3366cc idle at 400 ms, running false

گونه‌ها

ردیاب Tracker

ساختار ردیاب
پیوندی بی‌مقدار: تابعی را اجرا می‌کند، آنچه را خواند ثبت می‌کند و وقتی یکی از آن‌ها عوض شد یک بار خبر می‌دهد. پنجره یکی برای بازکشیدن و یکی برای چیدمان دارد.
نامانگلیسیگونهتوضیح
گرهnodeصحیح = -1شماره‌ی ردیاب در زمان اجرا.
gui-reactive-Track.salam
واردسازی رابط گرافیکی.واکنشی

ناپایا redraws := 0

تابع ریشه:
    x := واکنشی.صحیح تازه(1)
    y := واکنشی.صحیح تازه(2)
    t := واکنشی.ردیابی((): سرچاپ "  paint at"، x.بخوان()، y.بخوان() پایان، (): redraws++ پایان).نام بده("paint")
    x.بنشان(10)
    y.بنشان(20)
    سرچاپ "dirty"، t.کهنه است()، "redraw requests"، redraws
    سرچاپ "refreshed"، t.تازه کن()
    سرچاپ "refresh with nothing new"، t.تازه کن()

    واکنشی.آغاز دسته()
    x.بنشان(3)
    سرچاپ "in batch"، واکنشی.داخل دسته()، "requests"، redraws
    y.بنشان(4)
    واکنشی.اتمام دسته()
    سرچاپ "after the batch"، redraws
    _r := t.تازه کن()

    واکنشی.دسته(():
        x.بنشان(5)
        y.بنشان(6)
    پایان)
    سرچاپ "after Batch"، redraws
    _r2 := t.تازه کن()
    t.آزاد کن()
پایان
خروجی paint at 1 2 dirty true redraw requests 1 paint at 10 20 refreshed true refresh with nothing new false in batch true requests 1 after the batch 2 paint at 3 4 after Batch 3 paint at 5 6

کهنه است IsDirty

تابع کهنه است(): منطقی
می‌گوید از آخرین اجرای تابع ردیابی‌شده چیزی که خوانده بود عوض شده است یا نه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Track.salam

تازه کن Refresh

تابع تازه کن(): منطقی
اگر ردیاب کهنه باشد تابع را دوباره اجرا می‌کند و وابستگی‌های تازه ثبت می‌کند. برمی‌گرداند که اجرا شد یا نه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Track.salam

نام بده Name

تابع نام بده(name: رشته): ردیاب
به ردیاب نامی برای پیام‌های خطا می‌دهد و آن را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Track.salam

آزاد کن Free

تابع آزاد کن()
ردیاب را برمی‌دارد؛ تابع خبردهنده‌ی آن دیگر صدا زده نمی‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Track.salam

کنترل‌کننده Handler

ساختار کنترل‌کننده
کنترل‌کننده‌ی تغییری که هنگام تغییر ساخته است.
نامانگلیسیگونهتوضیح
گرهnodeصحیح = -1شماره‌ی کنترل‌کننده در زمان اجرا، یا -1 برای کنترل‌کننده‌ی یک ثابت که هرگز اجرا نمی‌شود.
gui-reactive-OnChange.salam
واردسازی رابط گرافیکی.واکنشی

تابع ریشه:
    count := واکنشی.صحیح تازه(0)
    title := واکنشی.متن تازه("")
    title.پیوند((): برگشت "Count: " + count.بخوان() پایان)
    h := واکنشی.هنگام تغییر(title، (): سرچاپ "  title changed to"، title.بخوان() پایان)
    count.بنشان(1)
    count.بنشان(2)
    count.بنشان(3)
    سرچاپ "pending"، واکنشی.کنترل‌کننده های منتظر()
    سرچاپ "handlers run"، واکنشی.اجرای کنترل‌کننده ها()
    count.بنشان(3)
    سرچاپ "same value"، واکنشی.اجرای کنترل‌کننده ها()
    h.آزاد کن()
    count.بنشان(4)
    سرچاپ "after Free"، واکنشی.اجرای کنترل‌کننده ها()
پایان
خروجیpending 1 title changed to Count: 3 handlers run 1 same value 0 after Free 0

آزاد کن Free

تابع آزاد کن()
کنترل‌کننده را برمی‌دارد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-OnChange.salam

گونه‌نرمش EasingKind

جداشمار گونه‌نرمش
خانواده‌ی یک تابع نرمش.
نامانگلیسیگونهتوضیح
خطیLinearپیشرفت با زمان متناسب است.
بزیه مکعبیCubicBezierمنحنی cubic-bezier() در CSS با ایکس یک، ایگرگ یک، ایکس دو و ایگرگ دو.
پله ایStepsتابع steps() در CSS با شمار پله و جای پرش.
gui-reactive-Easing.salam
واردسازی رابط گرافیکی.واکنشی
واردسازی ریاضی

تابع r3(v: اعشار۶۴): اعشار۶۴:
    برگشت ریاضی.گردکردن(v * 1000.0) / 1000.0
پایان

تابع ریشه:
    هر e در [واکنشی.نرمش خطی()، واکنشی.نرمش عادی()، واکنشی.نرمش ورود()، واکنشی.نرمش خروج()، واکنشی.نرمش ورود خروج()]:
        سرچاپ r3(e.مقدار لحظه(0.25))، r3(e.مقدار لحظه(0.5))، r3(e.مقدار لحظه(0.75))
    پایان
    custom := واکنشی.نرمش بزیه(0.68، -0.6، 0.32، 1.6)
    سرچاپ "custom"، r3(custom.مقدار لحظه(0.25))، r3(custom.مقدار لحظه(0.75))
    s := واکنشی.نرمش پله ای(3، واکنشی.جای‌پله.پرش آغاز)
    سرچاپ "steps"، s.مقدار لحظه(0.0)، r3(s.مقدار لحظه(0.5))، s.مقدار لحظه(1.0)
    p := واکنشی.خواندن نرمش("cubic-bezier(0.1, 0.7, 1.0, 0.1)"، واکنشی.نرمش عادی())
    سرچاپ "parsed"، p.گونه برابر واکنشی.گونه‌نرمش.بزیه مکعبی، p.ایکس یک، p.ایگرگ یک، p.ایکس دو، p.ایگرگ دو
    q := واکنشی.خواندن نرمش("steps(5, jump-none)"، واکنشی.نرمش عادی())
    سرچاپ "parsed steps"، q.شمار پله، q.جای پرش برابر واکنشی.جای‌پله.بدون پرش
    bad := واکنشی.خواندن نرمش("bounce"، واکنشی.نرمش خطی())
    سرچاپ "fallback"، bad.گونه برابر واکنشی.گونه‌نرمش.خطی
پایان
خروجی0.25 0.5 0.75 0.409 0.802 0.96 0.093 0.315 0.622 0.378 0.685 0.907 0.129 0.5 0.871 custom -0.098 1.098 steps 0.3333333333333333 0.667 1 parsed true 0.1 0.7 1 0.1 parsed steps 5 true fallback true

جای‌پله StepPosition

جداشمار جای‌پله
جایی که نرمش پله‌ای می‌پرد، مانند CSS.
نامانگلیسیگونهتوضیح
پرش آغازJumpStartپرش نخست در آغاز است (jump-start یا start).
پرش انتهاJumpEndپرش آخر در انتهاست (jump-end یا end، پیش‌فرض).
بدون پرشJumpNoneدر هیچ سر پرشی نیست (jump-none)؛ دست‌کم دو پله لازم است.
پرش دو سوJumpBothدر هر دو سر می‌پرد (jump-both).

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Easing.salam

نرمش Easing

ساختار نرمش
یک تابع نرمش CSS. با نرمش خطی، نرمش عادی، نرمش ورود، نرمش خروج، نرمش ورود خروج، نرمش بزیه، نرمش پله ای یا خواندن نرمش ساخته می‌شود.
نامانگلیسیگونهتوضیح
گونهkindگونه‌نرمشخانواده‌ی این تابع.
ایکس یکx1اعشار۶۴ = 0مختصه‌ی x نقطه‌ی کنترل نخست، میان 0 و 1.
ایگرگ یکy1اعشار۶۴ = 0مختصه‌ی y نقطه‌ی کنترل نخست؛ برای فراتر رفتن می‌تواند از 0 تا 1 بیرون بزند.
ایکس دوx2اعشار۶۴ = 1مختصه‌ی x نقطه‌ی کنترل دوم، میان 0 و 1.
ایگرگ دوy2اعشار۶۴ = 1مختصه‌ی y نقطه‌ی کنترل دوم.
شمار پلهstepsصحیح = 1شمار پله‌های نرمش پله‌ای.
جای پرشpositionجای‌پلهجایی که نرمش پله‌ای می‌پرد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Easing.salam

مقدار لحظه At

تابع مقدار لحظه(t: اعشار۶۴): اعشار۶۴
پیشرفت نرم‌شده را برای کسر زمانی t برمی‌گرداند؛ t به بازه‌ی 0 تا 1 محدود می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Easing.salam

پویانمایی‌ویژگی Animation

ساختار پویانمایی‌ویژگی
اینکه ویژگی پویانما چگونه به مقدار تازه می‌رود، مانند transition در CSS.
نامانگلیسیگونهتوضیح
مدتdurationصحیح = 0طول پویانمایی به میلی‌ثانیه. صفر یعنی پرش فوری.
درنگdelayصحیح = 0میلی‌ثانیه‌هایی که پس از تغییر صبر می‌کند؛ در این مدت مقدار قبلی دیده می‌شود.
نرمشeasingنرمشتابع نرمش. پیش‌فرض خطی است.
رنگیcolorمنطقی = نادرستعدد صحیح را رنگ 0xAARRGGBB می‌گیرد و هر کانال را جدا میان‌یابی می‌کند.
gui-reactive-Animate.salam
واردسازی تبدیل
واردسازی رابط گرافیکی.واکنشی

تابع ریشه:
    واکنشی.تنظیم زمان(0 برگردان صحیح۶۴)
    left := واکنشی.اعشاری تازه(0.0)
    left.پویانمایی(واکنشی.پویانمایی‌ویژگی { مدت = 400، نرمش = واکنشی.نرمش خروج() })
    left.بنشان(200.0)
    سرچاپ "running"، واکنشی.پویانمایی جاری()، واکنشی.شمار پویانمایی ها()
    تا واکنشی.پویانمایی جاری():
        سرچاپ "t"، واکنشی.اکنون()، "left"، left.بخوان()
        واکنشی.جلو بردن زمان(100 برگردان صحیح۶۴)
    پایان
    سرچاپ "t"، واکنشی.اکنون()، "left"، left.بخوان()، "running"، واکنشی.پویانمایی جاری()

    واکنشی.تنظیم زمان(1000 برگردان صحیح۶۴)
    tint := واکنشی.صحیح تازه(0xFF000000 برگردان صحیح)
    tint.پویانمایی(واکنشی.پویانمایی‌ویژگی { مدت = 200، درنگ = 100، رنگی = درست })
    tint.بنشان(0xFFFFFFFF برگردان صحیح)
    تکرار 4 در i:
        واکنشی.تنظیم زمان(1000 برگردان صحیح۶۴ + (i * 100) برگردان صحیح۶۴)
        سرچاپ "tint"، تبدیل.قالب شانزده(((tint.بخوان() برگردان صحیح۶۴) & 0xFFFFFFFF) برگردان طبیعی۶۴)
    پایان
پایان
خروجیrunning true 1 t 0 left 0 t 100 left 75.6276261652198 t 200 left 136.9286374988214 t 300 left 181.3070698012065 t 400 left 200 running false tint ff000000 tint ff000000 tint ff808080 tint ffffffff

تغییر‌مدل ModelChange

جداشمار تغییر‌مدل
گونه‌ی تغییری که مدل‌فهرست گزارش می‌دهد.
نامانگلیسیگونهتوضیح
سطر تغییر کردRowChangedیک سطر مقدار تازه گرفت.
سطرها افزوده شدRowsInsertedشمار سطر در شماره افزوده شد.
سطرها حذف شدRowsRemovedشمار سطر از شماره حذف شد.
بازسازی کاملResetممکن است همه چیز عوض شده باشد؛ همه‌ی سطرها را از نو بسازید.
gui-reactive-ListModel.salam
واردسازی رابط گرافیکی.واکنشی

ساختار Row:
    همگانی name: رشته = ""
    همگانی done: منطقی = نادرست
پایان

تابع ریشه:
    rows := واکنشی.مدل فهرست تازه() برگردان واکنشی.مدل‌فهرست<Row>
    _id := rows.گوش بده((ev: واکنشی.رویداد‌مدل): سرچاپ "  change"، ev.گونه برگردان صحیح، "index"، ev.شماره، "count"، ev.شمار پایان)
    status := واکنشی.متن تازه("")
    status.پیوند((): برگشت "" + rows.طول() + " rows" پایان)
    rows.بیفزا(Row { name = "milk" })
    rows.بیفزا(Row { name = "bread" })
    rows.درج کن(0، Row { name = "eggs" })
    سرچاپ status.بخوان()، rows.بخوان(0).name
    rows.بنشان(1، Row { name = "milk"، done = درست })
    rows.حذف کن(0، 1)
    سرچاپ status.بخوان()، rows.بخوان(0).done
    h := rows.هنگام تغییر((): سرچاپ "  rows changed" پایان)
    rows.پاک کن()
    سرچاپ "handlers"، واکنشی.اجرای کنترل‌کننده ها()، status.بخوان()
    ناپایا more := وکتور {} برگردان وکتور<Row>
    more.بیفزا(Row { name = "tea" })
    rows.جایگزین کن(more)
    more.آزادکن()
    rows.گوش نده(_id)
    rows.بیفزا(Row { name = "rice" })
    سرچاپ status.بخوان()، واکنشی.تغییر‌مدل.بازسازی کامل برگردان صحیح
    h.آزاد کن()
    rows.آزاد کن()
پایان
خروجی change 1 index 0 count 1 change 1 index 1 count 1 change 1 index 0 count 1 3 rows eggs change 0 index 1 count 1 change 2 index 0 count 1 2 rows true change 3 index 0 count 0 rows changed handlers 1 0 rows change 3 index 0 count 1 2 rows 3

رویداد‌مدل ModelEvent

ساختار رویداد‌مدل
یک خبر تغییر از مدل‌فهرست.
نامانگلیسیگونهتوضیح
گونهkindتغییر‌مدلچه رخ داد.
شمارهindexصحیح = 0نخستین سطر درگیر.
شمارcountصحیح = 0شمار سطرها؛ برای بازسازی کامل، طول تازه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-ListModel.salam

مدل‌فهرست ListModel

ساختار مدل‌فهرست<T>
فهرستی از مقدار یا رکورد که پیوندها می‌توانند به آن وابسته باشند و به شنونده‌ها دقیقاً می‌گوید کدام سطرها عوض شد، تا عنصر تکرارشونده فقط همان سطرها را از نو بسازد. با مدل فهرست تازه ساخته می‌شود؛ رونوشت‌های دستگیره یک فهرست را شریک‌اند.
نامانگلیسیگونهتوضیح
وضعیتstateتهی*تکه‌ی هیپ که سطرها، شنونده‌ها و دو گره وابستگی را نگه می‌دارد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-ListModel.salam

طول Len

تابع طول(): صحیح
شمار سطرها را برمی‌گرداند؛ درون پیوند به افزودن، حذف و بازسازی وابسته می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-ListModel.salam

بخوان Get

تابع بخوان(i: صحیح): T
سطر i را برمی‌گرداند؛ درون پیوند به هر تغییر سطرها وابسته می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-ListModel.salam

بنشان Set

تابع بنشان(i: صحیح، v: T)
سطر i را جایگزین می‌کند و تغییر سطر را گزارش می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-ListModel.salam

بیفزا Push

تابع بیفزا(v: T)
سطری به انتها می‌افزاید و افزودن سطر را گزارش می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-ListModel.salam

درج کن Insert

تابع درج کن(i: صحیح، v: T)
سطری پیش از سطر i می‌گذارد و افزودن سطر را گزارش می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-ListModel.salam

حذف کن Remove

تابع حذف کن(i: صحیح، count: صحیح)
count سطر را از i حذف می‌کند (در انتهای فهرست کمتر) و حذف سطرها را گزارش می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-ListModel.salam

پاک کن Clear

تابع پاک کن()
همه‌ی سطرها را حذف می‌کند و بازسازی کامل را گزارش می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-ListModel.salam

جایگزین کن Replace

تابع جایگزین کن(rows: وکتور<T>)
سطرهای وکتور را به جای سطرهای قبلی در مدل کپی می‌کند و بازسازی کامل را گزارش می‌دهد. وکتور مال صدازننده می‌ماند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-ListModel.salam

گوش بده Listen

تابع گوش بده(cb: تابع(رویداد‌مدل)): صحیح
شنونده‌ای ثبت می‌کند که برای هر تغییر بی‌درنگ صدا زده می‌شود و شناسه‌اش را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-ListModel.salam

گوش نده Unlisten

تابع گوش نده(id: صحیح)
شنونده‌ی این شناسه را خاموش می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-ListModel.salam

هنگام تغییر OnChange

تابع هنگام تغییر(body: تابع()): کنترل‌کننده
کنترل‌کننده‌ی تغییری ثبت می‌کند که پس از تغییر سطرها از اجرای کنترل‌کننده ها اجرا می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-ListModel.salam

آزاد کن Free

تابع آزاد کن()
سطرها، شنونده‌ها و گره‌های مدل را آزاد می‌کند. مدل را پیش از بازنشانی آزاد کنید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-ListModel.salam

ویژگی‌صحیح IntProp

ساختار ویژگی‌صحیح
ویژگی‌ای که یک صحیح نگه می‌دارد. خود دستگیره مقداری کوچک است که آزادانه کپی می‌شود و مقدار اصلی در زمان اجرا می‌ماند. دستگیره‌ای که گره آن -1 باشد ثابت است.
نامانگلیسیگونهتوضیح
گرهnodeصحیح = -1شماره‌ی ویژگی در زمان اجرا، یا -1 برای ثابتی که با تابع‌های ثابت ساخته شده است.
مقدار ثابتfixedصحیح = 0مقدار یک ویژگی ثابت. وقتی گره -1 نباشد به کار نمی‌رود.
gui-reactive-Basics.salam
واردسازی رابط گرافیکی.واکنشی

تابع ریشه:
    width := واکنشی.صحیح تازه(3).نام بده("width")
    height := واکنشی.صحیح تازه(4).نام بده("height")
    area := واکنشی.صحیح تازه(0).نام بده("area")
    area.پیوند((): برگشت width.بخوان() * height.بخوان() پایان)
    سرچاپ "area"، area.بخوان()، "bound"، area.پیوند دارد()

    width.بنشان(10)
    سرچاپ "dirty after a set"، area.کهنه است()، "evaluations so far"، واکنشی.شمار ارزیابی()
    سرچاپ "area"، area.بخوان()، "evaluations so far"، واکنشی.شمار ارزیابی()
    سرچاپ "peek reads without tracking"، area.نگاه()

    marks := واکنشی.شمار نشانه گذاری()
    height.بنشان(5)
    height.بنشان(6)
    سرچاپ "dirty marks for two sets"، واکنشی.شمار نشانه گذاری() - marks

    area.بنشان(1)
    سرچاپ "a set replaces the binding"، area.پیوند دارد()، area.بخوان()
    سرچاپ "nodes"، واکنشی.گره های زنده()، "edges"، واکنشی.یال های زنده()

    width.آزاد کن()
    height.آزاد کن()
    area.آزاد کن()
    واکنشی.بازنشانی()
    سرچاپ "nodes after reset"، واکنشی.گره های زنده()
پایان
خروجیarea 12 bound true dirty after a set true evaluations so far 1 area 40 evaluations so far 2 peek reads without tracking 40 dirty marks for two sets 1 a set replaces the binding false 1 nodes 3 edges 0 nodes after reset 0

بخوان Get

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

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Basics.salam

نگاه Peek

تابع نگاه(): صحیح
مانند بخوان است ولی وابستگی ثبت نمی‌کند، پس صدازننده با تغییر این ویژگی به‌روز نمی‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Basics.salam

بنشان Set

تابع بنشان(v: صحیح)
مقدار تازه را می‌گذارد. پیوند ساده را اول برمی‌دارد، همان‌طور که در Slint مقداردهی جای پیوند را می‌گیرد؛ روی ویژگی همبند مقدار مشترک و روی ویژگی پویانما مقدار هدف را عوض می‌کند. وابسته‌ها فقط وقتی کهنه می‌شوند که مقدار واقعاً عوض شده باشد. نشاندن ثابت خطاست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Basics.salam

پیوند Bind

تابع پیوند(calc: تابع(): صحیح)
ویژگی را محاسبه‌ای می‌کند: calc با تأخیر اجرا می‌شود، در نخستین خواندن پس از تغییر چیزی که خوانده بود. روی ویژگی همبند کل گروه این پیوند را می‌گیرد و روی ویژگی پویانما پیوند مقدار هدف را می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Basics.salam

پویانمایی Animate

تابع پویانمایی(spec: پویانمایی‌ویژگی)
هر تغییر بعدی مقدار را پویانمایی می‌کند: از این پس نشاندن یا پیوند مقدار هدف را می‌دهد و خواندن مقداری را برمی‌گرداند که در مدت میلی‌ثانیه از ساعت پویانمایی به سوی هدف می‌رود. صدا زدن دوباره مشخصات را عوض می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Animate.salam

نام بده Name

تابع نام بده(name: رشته): ویژگی‌صحیح
به ویژگی نامی می‌دهد که در پیام‌های خطا، مثل گزارش حلقه‌ی پیوند، می‌آید و همان دستگیره را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Basics.salam

پیوند دارد HasBinding

تابع پیوند دارد(): منطقی
می‌گوید مقدار با یک پیوند محاسبه می‌شود یا از یک همبندی دوطرفه می‌آید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Basics.salam

کهنه است IsDirty

تابع کهنه است(): منطقی
می‌گوید از آخرین اجرای پیوند چیزی که خوانده بود عوض شده است یا نه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Basics.salam

تابع جدا کن()
از همبندی دوطرفه بیرون می‌آید و مقدار کنونی را به‌صورت مقدار ساده نگه می‌دارد. روی ویژگی ناهمبند کاری نمی‌کند.
gui-reactive-Link.salam
واردسازی رابط گرافیکی.واکنشی

تابع ریشه:
    model := واکنشی.متن تازه("hello")
    field := واکنشی.متن تازه("")
    واکنشی.همبند کن(model، field)
    سرچاپ model.بخوان()، field.بخوان()
    field.بنشان("typed in the field")
    سرچاپ model.بخوان()
    model.بنشان("set by the program")
    سرچاپ field.بخوان()

    volume := واکنشی.صحیح تازه(5)
    slider := واکنشی.صحیح تازه(0)
    knob := واکنشی.صحیح تازه(0)
    واکنشی.همبند کن(volume، slider)
    واکنشی.همبند کن(slider، knob)
    knob.بنشان(9)
    سرچاپ volume.بخوان()، slider.بخوان()، knob.بخوان()
    slider.جدا کن()
    slider.بنشان(1)
    سرچاپ volume.بخوان()، slider.بخوان()، knob.بخوان()
پایان
خروجیhello hello typed in the field set by the program 9 9 9 9 1 9

آزاد کن Free

تابع آزاد کن()
ویژگی را از زمان اجرا برمی‌دارد. پیوندهایی که آن را می‌خواندند دیگر با آن به‌روز نمی‌شوند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Basics.salam

ویژگی‌صحیح۶۴ I64Prop

ساختار ویژگی‌صحیح۶۴
ویژگی‌ای که یک صحیح۶۴ نگه می‌دارد. خود دستگیره مقداری کوچک است که آزادانه کپی می‌شود و مقدار اصلی در زمان اجرا می‌ماند. دستگیره‌ای که گره آن -1 باشد ثابت است.
نامانگلیسیگونهتوضیح
گرهnodeصحیح = -1شماره‌ی ویژگی در زمان اجرا، یا -1 برای ثابتی که با تابع‌های ثابت ساخته شده است.
مقدار ثابتfixedصحیح۶۴ = 0مقدار یک ویژگی ثابت. وقتی گره -1 نباشد به کار نمی‌رود.
gui-reactive-Types.salam
واردسازی رابط گرافیکی.واکنشی
واردسازی رشته

تابع ریشه:
    bytes := واکنشی.صحیح۶۴ تازه(3000000000 برگردان صحیح۶۴)
    scale := واکنشی.اعشاری تازه(1.5)
    visible := واکنشی.منطقی تازه(درست)
    name := واکنشی.متن تازه("Sara")
    greeting := واکنشی.متن تازه("")
    greeting.پیوند((): برگشت "Hello, " + name.بخوان() + "!" پایان)
    shown := واکنشی.متن تازه("")
    shown.پیوند رونوشتی((): برگشت visible.بخوان() ? name.بخوان() : "hidden" پایان)
    سرچاپ greeting.بخوان()، shown.بخوان()
    name.بنشان("Reza")
    visible.بنشان(نادرست)
    سرچاپ greeting.بخوان()، shown.بخوان()
    سرچاپ bytes.بخوان()، scale.بخوان() * 2.0

    gap := واکنشی.صحیح ثابت(8)
    big := واکنشی.صحیح۶۴ ثابت(9000000000 برگردان صحیح۶۴)
    ratio := واکنشی.اعشاری ثابت(0.5)
    flag := واکنشی.منطقی ثابت(درست)
    label := واکنشی.متن ثابت("fixed")
    سرچاپ gap.بخوان()، big.بخوان()، ratio.بخوان()، flag.بخوان()، label.بخوان()، "node"، gap.گره، "fixed"، gap.مقدار ثابت

    kept := رشته.رونوشت(greeting.بخوان())
    name.بنشان("Mina")
    سرچاپ "copy kept"، kept، "now"، greeting.بخوان()
پایان
خروجیHello, Sara! Sara Hello, Reza! hidden 3000000000 3 8 9000000000 0.5 true fixed node -1 fixed 8 copy kept Hello, Reza! now Hello, Mina!

بخوان Get

تابع بخوان(): صحیح۶۴
مقدار را برمی‌گرداند. اگر پیوند کهنه باشد اول آن را اجرا می‌کند و اگر درون یک پیوند یا ردیاب صدا زده شود وابستگی ثبت می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

نگاه Peek

تابع نگاه(): صحیح۶۴
مانند بخوان است ولی وابستگی ثبت نمی‌کند، پس صدازننده با تغییر این ویژگی به‌روز نمی‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

بنشان Set

تابع بنشان(v: صحیح۶۴)
مقدار تازه را می‌گذارد. پیوند ساده را اول برمی‌دارد، همان‌طور که در Slint مقداردهی جای پیوند را می‌گیرد؛ روی ویژگی همبند مقدار مشترک و روی ویژگی پویانما مقدار هدف را عوض می‌کند. وابسته‌ها فقط وقتی کهنه می‌شوند که مقدار واقعاً عوض شده باشد. نشاندن ثابت خطاست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

پیوند Bind

تابع پیوند(calc: تابع(): صحیح۶۴)
ویژگی را محاسبه‌ای می‌کند: calc با تأخیر اجرا می‌شود، در نخستین خواندن پس از تغییر چیزی که خوانده بود. روی ویژگی همبند کل گروه این پیوند را می‌گیرد و روی ویژگی پویانما پیوند مقدار هدف را می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

پویانمایی Animate

تابع پویانمایی(spec: پویانمایی‌ویژگی)
هر تغییر بعدی مقدار را پویانمایی می‌کند: از این پس نشاندن یا پیوند مقدار هدف را می‌دهد و خواندن مقداری را برمی‌گرداند که در مدت میلی‌ثانیه از ساعت پویانمایی به سوی هدف می‌رود. صدا زدن دوباره مشخصات را عوض می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Animate.salam

نام بده Name

تابع نام بده(name: رشته): ویژگی‌صحیح۶۴
به ویژگی نامی می‌دهد که در پیام‌های خطا، مثل گزارش حلقه‌ی پیوند، می‌آید و همان دستگیره را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

پیوند دارد HasBinding

تابع پیوند دارد(): منطقی
می‌گوید مقدار با یک پیوند محاسبه می‌شود یا از یک همبندی دوطرفه می‌آید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

کهنه است IsDirty

تابع کهنه است(): منطقی
می‌گوید از آخرین اجرای پیوند چیزی که خوانده بود عوض شده است یا نه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

تابع جدا کن()
از همبندی دوطرفه بیرون می‌آید و مقدار کنونی را به‌صورت مقدار ساده نگه می‌دارد. روی ویژگی ناهمبند کاری نمی‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Link.salam

آزاد کن Free

تابع آزاد کن()
ویژگی را از زمان اجرا برمی‌دارد. پیوندهایی که آن را می‌خواندند دیگر با آن به‌روز نمی‌شوند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

ویژگی‌اعشاری F64Prop

ساختار ویژگی‌اعشاری
ویژگی‌ای که یک اعشار۶۴ نگه می‌دارد. خود دستگیره مقداری کوچک است که آزادانه کپی می‌شود و مقدار اصلی در زمان اجرا می‌ماند. دستگیره‌ای که گره آن -1 باشد ثابت است.
نامانگلیسیگونهتوضیح
گرهnodeصحیح = -1شماره‌ی ویژگی در زمان اجرا، یا -1 برای ثابتی که با تابع‌های ثابت ساخته شده است.
مقدار ثابتfixedاعشار۶۴ = 0مقدار یک ویژگی ثابت. وقتی گره -1 نباشد به کار نمی‌رود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

بخوان Get

تابع بخوان(): اعشار۶۴
مقدار را برمی‌گرداند. اگر پیوند کهنه باشد اول آن را اجرا می‌کند و اگر درون یک پیوند یا ردیاب صدا زده شود وابستگی ثبت می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

نگاه Peek

تابع نگاه(): اعشار۶۴
مانند بخوان است ولی وابستگی ثبت نمی‌کند، پس صدازننده با تغییر این ویژگی به‌روز نمی‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

بنشان Set

تابع بنشان(v: اعشار۶۴)
مقدار تازه را می‌گذارد. پیوند ساده را اول برمی‌دارد، همان‌طور که در Slint مقداردهی جای پیوند را می‌گیرد؛ روی ویژگی همبند مقدار مشترک و روی ویژگی پویانما مقدار هدف را عوض می‌کند. وابسته‌ها فقط وقتی کهنه می‌شوند که مقدار واقعاً عوض شده باشد. نشاندن ثابت خطاست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

پیوند Bind

تابع پیوند(calc: تابع(): اعشار۶۴)
ویژگی را محاسبه‌ای می‌کند: calc با تأخیر اجرا می‌شود، در نخستین خواندن پس از تغییر چیزی که خوانده بود. روی ویژگی همبند کل گروه این پیوند را می‌گیرد و روی ویژگی پویانما پیوند مقدار هدف را می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

پویانمایی Animate

تابع پویانمایی(spec: پویانمایی‌ویژگی)
هر تغییر بعدی مقدار را پویانمایی می‌کند: از این پس نشاندن یا پیوند مقدار هدف را می‌دهد و خواندن مقداری را برمی‌گرداند که در مدت میلی‌ثانیه از ساعت پویانمایی به سوی هدف می‌رود. صدا زدن دوباره مشخصات را عوض می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Animate.salam

نام بده Name

تابع نام بده(name: رشته): ویژگی‌اعشاری
به ویژگی نامی می‌دهد که در پیام‌های خطا، مثل گزارش حلقه‌ی پیوند، می‌آید و همان دستگیره را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

پیوند دارد HasBinding

تابع پیوند دارد(): منطقی
می‌گوید مقدار با یک پیوند محاسبه می‌شود یا از یک همبندی دوطرفه می‌آید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

کهنه است IsDirty

تابع کهنه است(): منطقی
می‌گوید از آخرین اجرای پیوند چیزی که خوانده بود عوض شده است یا نه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

تابع جدا کن()
از همبندی دوطرفه بیرون می‌آید و مقدار کنونی را به‌صورت مقدار ساده نگه می‌دارد. روی ویژگی ناهمبند کاری نمی‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Link.salam

آزاد کن Free

تابع آزاد کن()
ویژگی را از زمان اجرا برمی‌دارد. پیوندهایی که آن را می‌خواندند دیگر با آن به‌روز نمی‌شوند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

ویژگی‌منطقی BoolProp

ساختار ویژگی‌منطقی
ویژگی‌ای که یک منطقی نگه می‌دارد. خود دستگیره مقداری کوچک است که آزادانه کپی می‌شود و مقدار اصلی در زمان اجرا می‌ماند. دستگیره‌ای که گره آن -1 باشد ثابت است.
نامانگلیسیگونهتوضیح
گرهnodeصحیح = -1شماره‌ی ویژگی در زمان اجرا، یا -1 برای ثابتی که با تابع‌های ثابت ساخته شده است.
مقدار ثابتfixedمنطقی = نادرستمقدار یک ویژگی ثابت. وقتی گره -1 نباشد به کار نمی‌رود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

بخوان Get

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

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

نگاه Peek

تابع نگاه(): منطقی
مانند بخوان است ولی وابستگی ثبت نمی‌کند، پس صدازننده با تغییر این ویژگی به‌روز نمی‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

بنشان Set

تابع بنشان(v: منطقی)
مقدار تازه را می‌گذارد. پیوند ساده را اول برمی‌دارد، همان‌طور که در Slint مقداردهی جای پیوند را می‌گیرد؛ روی ویژگی همبند مقدار مشترک و روی ویژگی پویانما مقدار هدف را عوض می‌کند. وابسته‌ها فقط وقتی کهنه می‌شوند که مقدار واقعاً عوض شده باشد. نشاندن ثابت خطاست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

پیوند Bind

تابع پیوند(calc: تابع(): منطقی)
ویژگی را محاسبه‌ای می‌کند: calc با تأخیر اجرا می‌شود، در نخستین خواندن پس از تغییر چیزی که خوانده بود. روی ویژگی همبند کل گروه این پیوند را می‌گیرد و روی ویژگی پویانما پیوند مقدار هدف را می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

نام بده Name

تابع نام بده(name: رشته): ویژگی‌منطقی
به ویژگی نامی می‌دهد که در پیام‌های خطا، مثل گزارش حلقه‌ی پیوند، می‌آید و همان دستگیره را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

پیوند دارد HasBinding

تابع پیوند دارد(): منطقی
می‌گوید مقدار با یک پیوند محاسبه می‌شود یا از یک همبندی دوطرفه می‌آید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

کهنه است IsDirty

تابع کهنه است(): منطقی
می‌گوید از آخرین اجرای پیوند چیزی که خوانده بود عوض شده است یا نه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

تابع جدا کن()
از همبندی دوطرفه بیرون می‌آید و مقدار کنونی را به‌صورت مقدار ساده نگه می‌دارد. روی ویژگی ناهمبند کاری نمی‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Link.salam

آزاد کن Free

تابع آزاد کن()
ویژگی را از زمان اجرا برمی‌دارد. پیوندهایی که آن را می‌خواندند دیگر با آن به‌روز نمی‌شوند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

ویژگی‌متنی StrProp

ساختار ویژگی‌متنی
ویژگی‌ای که یک رشته نگه می‌دارد. خود دستگیره مقداری کوچک است که آزادانه کپی می‌شود و مقدار اصلی در زمان اجرا می‌ماند. دستگیره‌ای که گره آن -1 باشد ثابت است.
نامانگلیسیگونهتوضیح
گرهnodeصحیح = -1شماره‌ی ویژگی در زمان اجرا، یا -1 برای ثابتی که با تابع‌های ثابت ساخته شده است.
مقدار ثابتfixedرشته = ""مقدار یک ویژگی ثابت. وقتی گره -1 نباشد به کار نمی‌رود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

بخوان Get

تابع بخوان(): رشته
متن را برمی‌گرداند. رشته مال ویژگی است و تا تغییر بعدی مقدار معتبر می‌ماند؛ برای نگه داشتن طولانی‌تر آن را با رشته.رونوشت کپی کنید. مانند دیگر روش‌های بخوان وابستگی ثبت می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

نگاه Peek

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

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

بنشان Set

تابع بنشان(v: رشته)
رونوشتی از متن را نگه می‌دارد، پس رشته‌ی صدازننده مال خودش می‌ماند. در بقیه مانند دیگر روش‌های بنشان است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

پیوند Bind

تابع پیوند(calc: تابع(): رشته)
متن را محاسبه‌ای می‌کند. calc باید رشته‌ای تازه روی هیپ برگرداند، مثل حاصل الحاق یا یک تابع رشته؛ ویژگی مالک آن می‌شود و در تغییر بعدی آزادش می‌کند. برای متن ثابت یا متن ویژگی دیگر از پیوند رونوشتی استفاده کنید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

پیوند رونوشتی BindCopy

تابع پیوند رونوشتی(calc: تابع(): رشته)
مانند پیوند است ولی ویژگی رونوشتی از خروجی calc نگه می‌دارد، پس calc می‌تواند متن ثابت یا متن ویژگی دیگری برگرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

نام بده Name

تابع نام بده(name: رشته): ویژگی‌متنی
به ویژگی نامی می‌دهد که در پیام‌های خطا، مثل گزارش حلقه‌ی پیوند، می‌آید و همان دستگیره را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

پیوند دارد HasBinding

تابع پیوند دارد(): منطقی
می‌گوید مقدار با یک پیوند محاسبه می‌شود یا از یک همبندی دوطرفه می‌آید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

کهنه است IsDirty

تابع کهنه است(): منطقی
می‌گوید از آخرین اجرای پیوند چیزی که خوانده بود عوض شده است یا نه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

تابع جدا کن()
از همبندی دوطرفه بیرون می‌آید و مقدار کنونی را به‌صورت مقدار ساده نگه می‌دارد. روی ویژگی ناهمبند کاری نمی‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Link.salam

آزاد کن Free

تابع آزاد کن()
ویژگی را از زمان اجرا برمی‌دارد. پیوندهایی که آن را می‌خواندند دیگر با آن به‌روز نمی‌شوند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

ویژگی Prop

ساختار ویژگی<T>
ویژگی از هر نوعی، برای رکوردها و مقدارهایی که ویژگی‌های نوع‌دار پوشش نمی‌دهند. مقدارش در یک خانه‌ی کوچک روی هیپ است. بنشان همیشه خبر می‌دهد، چون ممکن است T عملگر == نداشته باشد.
نامانگلیسیگونهتوضیح
گرهnodeصحیحشماره‌ی ویژگی در زمان اجرا.
خانهcellتهی*خانه‌ی هیپ که مقدار و پیوند را نگه می‌دارد.
gui-reactive-Prop.salam
واردسازی رابط گرافیکی.واکنشی

ساختار Size:
    همگانی w: صحیح = 0
    همگانی h: صحیح = 0
پایان

تابع ریشه:
    window := واکنشی.ویژگی تازه(Size { w = 800، h = 600 }).نام بده("window size")
    pad := واکنشی.صحیح تازه(16)
    content := واکنشی.ویژگی تازه(Size {})
    content.پیوند(():
        s := window.بخوان()
        برگشت Size { w = s.w - 2 * pad.بخوان()، h = s.h - 2 * pad.بخوان() }
    پایان)
    سرچاپ content.بخوان()، content.پیوند دارد()
    h := content.هنگام تغییر((): سرچاپ "  content is now"، content.نگاه() پایان)
    window.بنشان(Size { w = 1024، h = 768 })
    سرچاپ "handlers"، واکنشی.اجرای کنترل‌کننده ها()
    h.آزاد کن()
    window.آزاد کن()
    content.آزاد کن()
پایان
خروجیSize {w = 768, h = 568} true content is now Size {w = 992, h = 736} handlers 1

بخوان Get

تابع بخوان(): T
مقدار را برمی‌گرداند؛ پیوند کهنه را اول اجرا می‌کند و درون پیوند وابستگی ثبت می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Prop.salam

نگاه Peek

تابع نگاه(): T
مقدار را بی‌ثبت وابستگی برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Prop.salam

بنشان Set

تابع بنشان(v: T)
پیوند را برمی‌دارد، مقدار را می‌گذارد و وابسته‌ها را کهنه می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Prop.salam

پیوند Bind

تابع پیوند(calc: تابع(): T)
مقدار را با calc محاسبه‌ای می‌کند که با تأخیر اجرا می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Prop.salam

هنگام تغییر OnChange

تابع هنگام تغییر(body: تابع()): کنترل‌کننده
کنترل‌کننده‌ی تغییر ثبت می‌کند، مانند هنگام تغییر برای ویژگی‌های نوع‌دار.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Prop.salam

نام بده Name

تابع نام بده(name: رشته): ویژگی<T>
به ویژگی نامی برای پیام‌های خطا می‌دهد و آن را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Prop.salam

پیوند دارد HasBinding

تابع پیوند دارد(): منطقی
می‌گوید مقدار با پیوند محاسبه می‌شود یا نه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Prop.salam

آزاد کن Free

تابع آزاد کن()
ویژگی را برمی‌دارد و خانه‌اش را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Prop.salam

تابع‌ها

ردیابی Track

تابع ردیابی(body: تابع()): ردیاب
body را همین حالا اجرا می‌کند، آنچه را می‌خواند ثبت می‌کند و ردیابی برمی‌گرداند. گونه‌ی دارای on_dirty آن را پس از نشاندنی که ردیاب را کهنه کرد یک بار صدا می‌زند و تا تازه کن دوباره صدا نمی‌زند. این تابع فقط باید کاری را زمان‌بندی کند، مثل بازکشیدن.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Track.salam

ردیابی Track

تابع ردیابی(body: تابع()، on_dirty: تابع()): ردیاب
body را همین حالا اجرا می‌کند، آنچه را می‌خواند ثبت می‌کند و ردیابی برمی‌گرداند. گونه‌ی دارای on_dirty آن را پس از نشاندنی که ردیاب را کهنه کرد یک بار صدا می‌زند و تا تازه کن دوباره صدا نمی‌زند. این تابع فقط باید کاری را زمان‌بندی کند، مثل بازکشیدن.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Track.salam

هنگام تغییر OnChange

تابع هنگام تغییر(p: ویژگی‌صحیح، body: تابع()): کنترل‌کننده
body را ثبت می‌کند تا پس از تغییر مقدار ویژگی اجرا شود. هرگز درون نشاندن اجرا نمی‌شود: تغییرها صف می‌شوند و اجرای کنترل‌کننده ها هر کنترل‌کننده را یک بار اجرا می‌کند، هر چند تغییر که باشد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-OnChange.salam

هنگام تغییر OnChange

تابع هنگام تغییر(p: ویژگی‌صحیح۶۴، body: تابع()): کنترل‌کننده
body را ثبت می‌کند تا پس از تغییر مقدار ویژگی اجرا شود. هرگز درون نشاندن اجرا نمی‌شود: تغییرها صف می‌شوند و اجرای کنترل‌کننده ها هر کنترل‌کننده را یک بار اجرا می‌کند، هر چند تغییر که باشد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-OnChange.salam

هنگام تغییر OnChange

تابع هنگام تغییر(p: ویژگی‌اعشاری، body: تابع()): کنترل‌کننده
body را ثبت می‌کند تا پس از تغییر مقدار ویژگی اجرا شود. هرگز درون نشاندن اجرا نمی‌شود: تغییرها صف می‌شوند و اجرای کنترل‌کننده ها هر کنترل‌کننده را یک بار اجرا می‌کند، هر چند تغییر که باشد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-OnChange.salam

هنگام تغییر OnChange

تابع هنگام تغییر(p: ویژگی‌منطقی، body: تابع()): کنترل‌کننده
body را ثبت می‌کند تا پس از تغییر مقدار ویژگی اجرا شود. هرگز درون نشاندن اجرا نمی‌شود: تغییرها صف می‌شوند و اجرای کنترل‌کننده ها هر کنترل‌کننده را یک بار اجرا می‌کند، هر چند تغییر که باشد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-OnChange.salam

هنگام تغییر OnChange

تابع هنگام تغییر(p: ویژگی‌متنی، body: تابع()): کنترل‌کننده
body را ثبت می‌کند تا پس از تغییر مقدار ویژگی اجرا شود. هرگز درون نشاندن اجرا نمی‌شود: تغییرها صف می‌شوند و اجرای کنترل‌کننده ها هر کنترل‌کننده را یک بار اجرا می‌کند، هر چند تغییر که باشد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-OnChange.salam

کنترل‌کننده های منتظر PendingHandlers

تابع کنترل‌کننده های منتظر(): صحیح
شمار کنترل‌کننده‌های منتظر اجرا.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-OnChange.salam

اجرای کنترل‌کننده ها RunPendingHandlers

تابع اجرای کنترل‌کننده ها(): صحیح
کنترل‌کننده‌های صف‌شده‌ای را که ویژگی‌شان واقعاً عوض شده اجرا می‌کند و شمارشان را برمی‌گرداند. کنترل‌کننده‌هایی که تغییر تازه می‌سازند در همین صدا زدن، تا ۱۰۰ دور، اجرا می‌شوند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-OnChange.salam

آخرین خطا LastError

تابع آخرین خطا(): رشته
آخرین خطای گزارش‌شده، مثل حلقه‌ی پیوند، یا رشته‌ی خالی را برمی‌گرداند. صدازننده نتیجه را آزاد می‌کند.
gui-reactive-Errors.salam
واردسازی رابط گرافیکی.واکنشی

تابع ریشه:
    واکنشی.چاپ خطاها(نادرست)
    a := واکنشی.صحیح تازه(0).نام بده("min width")
    b := واکنشی.صحیح تازه(0).نام بده("preferred width")
    a.پیوند((): برگشت b.بخوان() + 1 پایان)
    b.پیوند((): برگشت a.بخوان() + 1 پایان)
    سرچاپ "value with the loop cut"، a.بخوان()
    سرچاپ "errors"، واکنشی.شمار خطاها()
    سرچاپ واکنشی.آخرین خطا()
پایان
خروجیvalue with the loop cut 2 errors 1 binding loop: 'min width' -> 'preferred width' -> 'min width'

شمار خطاها ErrorCount

تابع شمار خطاها(): صحیح
شمار خطاها از آغاز یا از آخرین بازنشانی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Errors.salam

چاپ خطاها SetErrorPrinting

تابع چاپ خطاها(enabled: منطقی)
چاپ خطاها در خروجی خطا را روشن یا خاموش می‌کند. پیش‌فرض روشن است و خطاها در هر حال ثبت می‌شوند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Errors.salam

شمار ارزیابی Evaluations

تابع شمار ارزیابی(): صحیح
شمار اجرای پیوندها، ردیاب‌ها و کنترل‌کننده‌ها. برای وارسی تنبل بودن کار مفید است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Basics.salam

شمار نشانه گذاری DirtyMarks

تابع شمار نشانه گذاری(): صحیح
شمار دفعاتی که گره‌ای از تازه به کهنه رفت. پخش در گره‌های از پیش کهنه می‌ایستد، پس نشاندن دوم چیزی نمی‌افزاید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Basics.salam

گره های زنده LiveNodes

تابع گره های زنده(): صحیح
شمار ویژگی‌ها، ردیاب‌ها و کنترل‌کننده‌های زنده.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Basics.salam

یال های زنده LiveEdges

تابع یال های زنده(): صحیح
شمار وابستگی‌های ثبت‌شده.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Basics.salam

آغاز دسته BeginBatch

تابع آغاز دسته()
دسته‌ای را آغاز می‌کند: خبر ردیاب‌ها تا اتمام دسته صبر می‌کند تا همه‌ی تغییرها را با هم ببیند. دسته‌ها تودرتو می‌شوند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Track.salam

اتمام دسته EndBatch

تابع اتمام دسته()
دسته را می‌بندد و خبرهای ردیاب‌هایی را که در آن رسیدند اجرا می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Track.salam

دسته Batch

تابع دسته(body: تابع())
body را در یک دسته اجرا می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Track.salam

داخل دسته InBatch

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

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Track.salam

بازنشانی Reset

تابع بازنشانی()
همه‌ی ویژگی‌ها، ردیاب‌ها، کنترل‌کننده‌ها و پویانمایی‌ها را آزاد می‌کند و از نو آغاز می‌کند. دستگیره‌های پیشین دیگر معتبر نیستند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Basics.salam

نرمش خطی Linear

تابع نرمش خطی(): نرمش
نرمش linear.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Easing.salam

نرمش بزیه CubicBezier

تابع نرمش بزیه(x1: اعشار۶۴، y1: اعشار۶۴، x2: اعشار۶۴، y2: اعشار۶۴): نرمش
نرمش cubic-bezier(x1, y1, x2, y2).

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Easing.salam

نرمش عادی Ease

تابع نرمش عادی(): نرمش
نرمش ease در CSS، یعنی cubic-bezier(0.25, 0.1, 0.25, 1).

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Easing.salam

نرمش ورود EaseIn

تابع نرمش ورود(): نرمش
نرمش ease-in در CSS، یعنی cubic-bezier(0.42, 0, 1, 1).

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Easing.salam

نرمش خروج EaseOut

تابع نرمش خروج(): نرمش
نرمش ease-out در CSS، یعنی cubic-bezier(0, 0, 0.58, 1).

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Easing.salam

نرمش ورود خروج EaseInOut

تابع نرمش ورود خروج(): نرمش
نرمش ease-in-out در CSS، یعنی cubic-bezier(0.42, 0, 0.58, 1).

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Easing.salam

نرمش پله ای Steps

تابع نرمش پله ای(count: صحیح، position: جای‌پله): نرمش
نرمش steps(count, position).

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Easing.salam

خواندن نرمش ParseEasing

تابع خواندن نرمش(text: رشته، fallback: نرمش): نرمش
یک نرمش CSS را می‌خواند: واژه‌ای مانند linear، ease، ease-in، ease-out، ease-in-out، step-start و step-end، یا cubic-bezier(...) و steps(...). برای هر چیز دیگر fallback را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Easing.salam

تنظیم زمان SetTime

تابع تنظیم زمان(ms: صحیح۶۴)
ساعت پویانمایی را به میلی‌ثانیه تنظیم می‌کند. حلقه‌ی رویداد آن را در هر فریم صدا می‌زند؛ ویژگی‌های پویانما و هر چه آن‌ها را می‌خواند کهنه می‌شوند و پویانمایی‌های تمام‌شده به پایان می‌رسند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Animate.salam

جلو بردن زمان AdvanceTime

تابع جلو بردن زمان(ms: صحیح۶۴)
ساعت پویانمایی را ms میلی‌ثانیه جلو می‌برد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Animate.salam

اکنون Now

تابع اکنون(): صحیح۶۴
ساعت پویانمایی را برمی‌گرداند. درون پیوند، پیوند را به ساعت وابسته می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Animate.salam

پویانمایی جاری AnimationsRunning

تابع پویانمایی جاری(): منطقی
می‌گوید پویانمایی‌ای در حال حرکت یا منتظر آغاز هست یا نه، تا حلقه‌ی رویداد بداند باید فریم بکشد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Animate.salam

شمار پویانمایی ها RunningAnimations

تابع شمار پویانمایی ها(): صحیح
شمار پویانمایی‌های در حال حرکت یا منتظر آغاز.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Animate.salam

مدل فهرست تازه NewListModel

تابع مدل فهرست تازه<T>(): مدل‌فهرست<T>
مدل فهرست خالی می‌سازد. نوع سطر را با برگردان واکنشی.مدل‌فهرست<T> بدهید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-ListModel.salam

صحیح تازه NewInt

تابع صحیح تازه(v: صحیح): ویژگی‌صحیح
ویژگی صحیح با مقدار آغازین می‌سازد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Basics.salam

صحیح۶۴ تازه NewI64

تابع صحیح۶۴ تازه(v: صحیح۶۴): ویژگی‌صحیح۶۴
ویژگی صحیح۶۴ با مقدار آغازین می‌سازد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

اعشاری تازه NewF64

تابع اعشاری تازه(v: اعشار۶۴): ویژگی‌اعشاری
ویژگی اعشاری با مقدار آغازین می‌سازد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

منطقی تازه NewBool

تابع منطقی تازه(v: منطقی): ویژگی‌منطقی
ویژگی منطقی با مقدار آغازین می‌سازد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

متن تازه NewStr

تابع متن تازه(v: رشته): ویژگی‌متنی
ویژگی متنی با رونوشتی از v می‌سازد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

صحیح ثابت ConstInt

تابع صحیح ثابت(v: صحیح): ویژگی‌صحیح
ویژگی صحیح ثابت می‌سازد. در زمان اجرا حافظه‌ای نمی‌گیرد و خواندنش وابستگی ثبت نمی‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

صحیح۶۴ ثابت ConstI64

تابع صحیح۶۴ ثابت(v: صحیح۶۴): ویژگی‌صحیح۶۴
ویژگی صحیح۶۴ ثابت می‌سازد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

اعشاری ثابت ConstF64

تابع اعشاری ثابت(v: اعشار۶۴): ویژگی‌اعشاری
ویژگی اعشاری ثابت می‌سازد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

منطقی ثابت ConstBool

تابع منطقی ثابت(v: منطقی): ویژگی‌منطقی
ویژگی منطقی ثابت می‌سازد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

متن ثابت ConstStr

تابع متن ثابت(v: رشته): ویژگی‌متنی
ویژگی متنی ثابت می‌سازد. رشته کپی نمی‌شود، پس متن ثابت یا رشته‌ای بدهید که از دستگیره بیشتر بماند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Types.salam

تابع همبند کن(a: ویژگی‌صحیح، b: ویژگی‌صحیح)
دو ویژگی هم‌نوع را دوطرفه همبند می‌کند: یک مقدار را شریک‌اند و نشاندن هر کدام هر دو را عوض می‌کند. a مقدار آغازین را می‌دهد و پیوندش برای گروه می‌ماند. همبند کردن ویژگی سوم با هر کدام آن را به همان گروه می‌برد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Link.salam

تابع همبند کن(a: ویژگی‌صحیح۶۴، b: ویژگی‌صحیح۶۴)
دو ویژگی هم‌نوع را دوطرفه همبند می‌کند: یک مقدار را شریک‌اند و نشاندن هر کدام هر دو را عوض می‌کند. a مقدار آغازین را می‌دهد و پیوندش برای گروه می‌ماند. همبند کردن ویژگی سوم با هر کدام آن را به همان گروه می‌برد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Link.salam

تابع همبند کن(a: ویژگی‌اعشاری، b: ویژگی‌اعشاری)
دو ویژگی هم‌نوع را دوطرفه همبند می‌کند: یک مقدار را شریک‌اند و نشاندن هر کدام هر دو را عوض می‌کند. a مقدار آغازین را می‌دهد و پیوندش برای گروه می‌ماند. همبند کردن ویژگی سوم با هر کدام آن را به همان گروه می‌برد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Link.salam

تابع همبند کن(a: ویژگی‌منطقی، b: ویژگی‌منطقی)
دو ویژگی هم‌نوع را دوطرفه همبند می‌کند: یک مقدار را شریک‌اند و نشاندن هر کدام هر دو را عوض می‌کند. a مقدار آغازین را می‌دهد و پیوندش برای گروه می‌ماند. همبند کردن ویژگی سوم با هر کدام آن را به همان گروه می‌برد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Link.salam

تابع همبند کن(a: ویژگی‌متنی، b: ویژگی‌متنی)
دو ویژگی هم‌نوع را دوطرفه همبند می‌کند: یک مقدار را شریک‌اند و نشاندن هر کدام هر دو را عوض می‌کند. a مقدار آغازین را می‌دهد و پیوندش برای گروه می‌ماند. همبند کردن ویژگی سوم با هر کدام آن را به همان گروه می‌برد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Link.salam

ویژگی تازه NewProp

تابع ویژگی تازه<T>(v: T): ویژگی<T>
ویژگی از هر نوعی با مقدار آغازین می‌سازد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-reactive-Prop.salam