追加メモリが必要な場合にクリアできるフィールドを指定します。
説明
{if-non-null value = my-obj.my-weak-field then
{do-something-with value}
}
例
| 例: 計算された値をキャッシュするためのウィーク フィールドの使用 | |
![]() | |
{define-class CachedDateString
field public constant date:DateTime = {DateTime}
field private weak _date-str:#String
{getter public {date-str}:String
{return
{if-non-null str = self._date-str then
|| Return previously computed value.
str
else
|| Compute and cache new value before
|| returning it.
let str:String = {format "%s", self.date}
set self._date-str = str
str
}
}
}
}
{let d:CachedDateString = {CachedDateString}}
{value d.date-str}{br}
{value d.date-str}{br}
{garbage-collect} || value may be recomputed after collection
{value d.date-str}
|