- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在尝试创建两种方法,其中一种会破坏性地将“i”添加到任何字符串,而另一种会以非破坏性方式执行相同的操作。
def add_i(string)
new_string = string + "i"
end
def add_i!(string)
string = string + "i"
end
我的问题是:
这两种方法都是非破坏性的,即使我没有用新变量替换第二种方法中的参数。为什么?
一般来说,如何将非破坏性方法转换为破坏性方法,反之亦然?
最佳答案
答案在于变量的范围和方法/运算符的行为。 add_i! 中的左侧(= 左侧)string 与传入的string 不同(右侧 string 和方法参数)。旧字符串继续存在,但字符串 var 指向新字符串。
要使第二种方法“具有破坏性”,您可以这样做:
def add!(string)
string << "i"
end
根据经验,您需要了解您所应用的方法/运算符是对数据本身进行操作还是返回数据的副本(例如楼上的“+”返回副本)
处理字符串并确保不破坏数据的一种简单方法是对传入的任何内容使用 dup(),然后对副本进行操作。
关于Ruby:为什么我的方法是非破坏性的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33378786/
我正试图让这个 map 功能成为一个更具破坏性的版本。这意味着 map 函数会修改原始数组而不是新数组。 function map (array, callback) { var result =
破坏性 Lisp 函数名称中的“N”缩写是什么词? 最佳答案 这是一个直接的答案from Linearity的 link : The N stands for non-consing, meaning
这是带有数据绑定(bind)元素的 html: div data-bind="foreach: clientRequests" id="test2">
我是一名优秀的程序员,十分优秀!