fer*_*olo 2 reflection scala dynamic
Scala是否支持动态属性?例:
val dog = new Dynamic // Dynamic does not define 'name' nor 'speak'.
dog.name = "Rex" // New property.
dog.speak = { "woof" } // New method.
val cat = new Dynamic
cat.name = "Fluffy"
cat.speak = { "meow" }
val rock = new Dynamic
rock.name = "Topaz"
// rock doesn't speak.
def test(val animal: Any) = {
animal.name + " is telling " + animal.speak()
}
test(dog) // "Rex is telling woof"
test(cat) // "Fluffy is telling meow"
test(rock) // "Topaz is telling null"
Run Code Online (Sandbox Code Playgroud)
Scala最接近它的是什么?如果有类似"addProperty"的东西允许像普通字段一样使用添加的属性,那就足够了.
我对结构类型声明("类型安全鸭子打字")不感兴趣.我真正需要的是在运行时添加新的属性和方法,以便该对象可以被期望添加的元素存在的方法/代码使用.
Scala 2.9将具有特殊处理的动态特性,可能正是您所寻找的.
这个博客有一个很大的关于它:http://squirrelsewer.blogspot.com/2011/02/scalas-upcoming-dynamic-capabilities.html
我猜想在invokeDynamic方法中你需要检查"name_ =","speak_ =","name"和"speak",你可以将值存储在私有地图中.
| 归档时间: |
|
| 查看次数: |
3401 次 |
| 最近记录: |