gpt4 book ai didi

ruby - 猴子修补 vs class_eval?

转载 作者:数据小太阳 更新时间:2023-10-29 06:37:41 24 4
gpt4 key购买 nike

class String
def hello
"world"
end
end

String.class_eval {
def world
"hello"
end
}

"a".world
=> "hello"
"b".hello
=> "world"

他们似乎在做同样的事情——向现有类添加一个方法。那有什么区别呢?

最佳答案

使用 class_eval 你可以做更多动态的事情:

>> met = "hello" #=> "hello"
>> String.class_eval "def #{met} ; 'hello' ; end" #=> nil
>> "foo".hello #=> "hello"

关于ruby - 猴子修补 vs class_eval?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9399358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com