Ruby在这里用gsub做什么?
我正在将代码从Ruby转换为Node.js。我在一个函数的末尾遇到了这些行,我很好奇最初的开发人员试图实现什么:Ruby在这里用gsub做什么?,ruby,Ruby,我正在将代码从Ruby转换为Node.js。我在一个函数的末尾遇到了这些行,我很好奇最初的开发人员试图实现什么: url = url.gsub "member_id", "member_id__hashed" url = url.gsub member_id, member_id_hashed url 我假设最后的url是Ruby的等价于returnurl 至于带有gsub的行,根据我在网上找到的,这是错误的语法,对吗?难道不是: url=url.gsub(var1,var2)
url = url.gsub "member_id", "member_id__hashed"
url = url.gsub member_id, member_id_hashed
url
我假设最后的url
是Ruby的等价于returnurl代码>
至于带有gsub
的行,根据我在网上找到的,这是错误的语法,对吗?难道不是:
url=url.gsub(var1,var2)
如果它是正确的,为什么他们要调用它两次,一次带引号,一次不带引号?gsub
对字符串进行全局替换。如果让我猜的话,URL可能是
http://somewebsite.com?member_id=123
如果是,则代码具有以下效果:
url.gsub "member_id", "member_id__hashed"
# => "http://somewebsite.com?member_id__hashed=123"
假设member\u id=“123”
,并且member\u id\u hashed
是该id的某个哈希版本,则第二行将用哈希版本替换“123”
url.gsub member_id, member_id_hashed
# => "http://somewebsite.com?member_id__hashed=abc"
那么您将从http://somewebsite.com?member_id=123
至http://somewebsite.com?member_id__hashed=abc
文件:
我假设最后的url是Ruby的等价于返回url代码>
如果该代码确实是方法或块的一部分,则行url
就是该方法返回的值。这是因为默认情况下,方法中的Ruby中有一个。关键字return
可以用于(像在许多其他语言中一样)生成方法的早期返回,有返回值或没有返回值
这是错误的语法,对吗?难道不是吗
url=url.gsub(var1,var2)
在Ruby中用于调用方法的参数可以保留在括号中,但也可以在方法名称后面列出,而不带括号
两者:
及
是正确的,它们产生相同的结果
Ruby中的约定是不在方法参数周围加括号,但这并不总是可能的。其中一种情况是,其中一个参数调用另一个带有参数的方法。
然后,括号用于让解释器和代码的读者都清楚地了解所有内容
如果它是正确的,为什么他们要叫它两次,一次带引号,一次不带引号
同一方法有两个调用,参数不同:
url = url.gsub "member_id", "member_id__hashed"
url.gsub
的参数是文本字符串“member\u id”
和“member\u id\u hashed”
这次参数是变量member\u id
和member\u id\u hash
url = url.gsub member_id, member_id_hashed
这在JavaScript和许多其他使用双引号括起字符串文本的语言中也适用
类的一个方法,它在字符串中执行搜索和替换并返回新字符串。它的名称缺少“全局替换”(它替换所有出现的情况)。只替换第一次出现的用法。值得注意的是,在URL上单击gsub
可能会被严重误导。在本例中,如果123
碰巧出现在URL中的其他地方,那么这也会破坏该值。最好使用直接操作参数,并以更精确的方式重新编写。
url = url.gsub "member_id", "member_id__hashed"
url = url.gsub member_id, member_id_hashed