如果沒有,地平線上是否有這樣的事情?這是javascript/ruby/perl的一個功能,我不能沒有這個功能。我知道你可以用散列成員來僞造它,但是我不能從解析器中創建(任意的)「頭等」成員。ruby中的instance_variable_set方法的dart中是否有等價物?
0
A
回答
2
目前沒有什麼可以設置一個不存在的字段。 mirror API可用於設置已存在的字段,並可能最終擴展爲動態定義新字段。
1
您也可以在類上使用「noSuchMethod」方法來攔截setter/getter,並將接收到的值存儲在地圖中。
例如(我不記得確切的語法...):
class Foo {
var _dynamicProperties = new Map<String,Object>();
noSuchMethod(String function_name, List args) {
if (args.length == 0 && function_name.startsWith("get:")) {
//synthetic getter
var property = function_name.replaceFirst("get:", "");
if (_dynamicProperties.containsKey(property)) {
return _dynamicProperties[property];
}
}
else if (args.length == 1 && function_name.startsWith("set:")) {
//synthetic setter
var property = function_name.replaceFirst("set:", "");
//if the property doesn't exist, it will only be added
_dynamicProperties[property] = args[0];
return _dynamicProperties[property];
}
super.noSuchMethod(function_name, args)
}
}
然後你就可以在你的代碼如下使用:
var foo = new Foo();
foo.bar = "Hello World";
print(foo.bar);
當然,這可能會導致類型檢查程序不會檢查的拼寫錯誤,例如:
foo.bar = "Hello";
foo.baz = "Hello World"; // typo, meant to update foo.bar.
有幾種方法可以使用type-checker va通過使用重定向的工廠構造函數和一個隱含的接口進行封閉,但是隨後開始變得複雜。
備註:這是JsonObject用於將json映射轉換爲類類型語法的用途。
相關問題
- 1. JavaScript的Function.prototype.bind是否有Ruby等價物?
- 2. 是否有「python -i」的ruby等價物?
- 3. Android中是否有MethodHandle的等價物?
- 4. Ruby中subprocess.Popen()的等價物?
- 5. 在Python中是否有使用matplotlib和basemap的Ruby等價物?
- 6. Python中是否有Ruby的Yard等價物?
- 7. 在Swift中是否有Ruby的instance_eval等價物?
- 8. 什麼是Ruby中的「sys.stdout.write()」等價物?
- 9. 在Python中是否有sessionInfo()等價物?
- 10. 在Java中是否有TweenMax等價物
- 11. 在java中是否有array_intersect()等價物?
- 12. 在Doxygen中是否有@inheritDoc等價物?
- 13. 在Python中是否有Rake等價物?
- 14. 在Ramda中是否有R.notEquals等價物?
- 15. 在Windows中是否有XEmbed等價物?
- 16. 廚師中是否有puppet_nist等價物?
- 17. 是否有PHP的__toString方法的Go等價物?
- 18. 是否有與JavaScript的Array.prototype.every方法等價的ruby?
- 19. Ruby on Rails的「url_for」是否有Java的等價物?
- 20. 是否有Ruby的andand的Javascript等價物?
- 21. 什麼是AS3的foo的等價物:*在Dart中?
- 22. 是否有Wpf/Silverlight notifyPropertyChanged方法的Knockoutjs等價物?
- 23. Ruby中是否存在「yield break」的等價物?
- 24. 在Ruby 1.8.5中是否存在Array#each_slice()的等價物?
- 25. 是否有與Spring MVC的JSR303的Wicket中的variablesMap(IValidate)方法的等價物?
- 26. Dart對Java的StringBuilder的等價物
- 27. 是否有.Net System.Data的Java等價物?
- 28. 是否有Android的Application :: onDestroy()等價物?
- 29. 是否有Python的RedBeanPHP等價物?
- 30. excel vlookup是否有Java的等價物?
很酷。鏡像API應該讓我做我想做的事,我想。即我可以根據類和標識符構造一個默認實例,然後使用反射填充它的成員。謝謝! –
嗨@JimBelton請注意,鏡子現在只是真正的虛擬機,直到我們開始使用dart2js。你在建立客戶端還是服務器應用程序 –
Seth:我對dart感興趣,因爲它能夠同時用於服務器和客戶端。我對鏡像感興趣的是解析和持久性。客戶端不是必需的,但如果沒有它,解析必須在服務器端完成,因此在將來看到客戶端會很高興。 –