在Ruby中,""
关于条件,空字符串是真的.我看到很多人都在为这个事实而苦苦挣扎.Ruby on Rails blank?
是尝试克服这个问题的一种尝试.另一方面,当这种说明变得方便时,并不是立即显而易见的.是否有任何用例,这个事实变得方便,否则会出现理论上的问题?
我知道当我们不知道将传递的参数数量时,会使用splat参数.我想知道我是否应该一直使用splat.每当我传递参数时,使用splat参数是否有任何风险?
代码如下:
def a
print "Function 'a' called\n"
99
end
print "a=", a, "\n"
Run Code Online (Sandbox Code Playgroud)
生产:
Function 'a' called
a=99
Run Code Online (Sandbox Code Playgroud)
为什么function 'a' called
先显示?我希望a=
首先出现.
我试图让我的胖子User
模型不那么笨重.我正在使用值对象来表示它们的自定义值和操作,并且我坚持使用ActiveSupport::Concern
s和模块.我读这是一个灵感.
我把这样的帮助方法:
def is_a_wizard?
power_level >= WIZARD_POWER
end
def just_became_a_wizard?
power_level == WIZARD_POWER
end
Run Code Online (Sandbox Code Playgroud)
进入模块,并将它们作为一种扩展包含在内.但是,它很难阅读和维护,我在视图和控制器中都需要它们中的一些(例如用于向导身份验证).我应该把它们放在哪里?在使用它们时创建服务对象?
我定义了一个方法:
def method(one: 1, two: 2)
[one, two]
end
Run Code Online (Sandbox Code Playgroud)
当我这样称呼时:
method one: 'one', three: 'three'
Run Code Online (Sandbox Code Playgroud)
我明白了:
ArgumentError: unknown keyword: three
Run Code Online (Sandbox Code Playgroud)
我不想逐个从散列中提取所需的键或排除额外的键.有没有办法绕过这种行为,除了定义这样的方法:
def method(one: 1, two: 2, **other)
[one, two, other]
end
Run Code Online (Sandbox Code Playgroud) 例如,我有两个数组
a = [3, 2, 1]
b = [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
我需要将它们相乘并创建一个c
像这样的第三个数组
c = [3 * 1, 2 * 2, 1 * 3]
Run Code Online (Sandbox Code Playgroud)
哪种方法速度最快?我需要为大型阵列做这件事,时间很重要.
当我将一个数组*
传递给一个方法,然后*
在该方法中重建一个数组时,不保留数组的标识:
a = []
a.object_id # => 69846339548760
def bar *a; a.object_id end
bar(*a) # => 69846339537540
Run Code Online (Sandbox Code Playgroud)
但是,当我将proc转换为块&
时将其传递给方法,然后&
在方法中从块重构proc,则proc 的标识似乎会被保留:
pr = ->{}
pr.object_id # => 69846339666160
def foo ≺ pr.object_id end
foo(&pr) # => 69846339666160
Run Code Online (Sandbox Code Playgroud)
proc对象是如何保留的?它转换成块时不会丢失吗?这是一种保证行为吗?
我有以下数组:
A = [1,2,3,4,5]
B = [2,6,7,1]
Run Code Online (Sandbox Code Playgroud)
我想找到不相交的元素,如下:
output = [3,4,5,6,7]
Run Code Online (Sandbox Code Playgroud)
我能够实现如下,
output = A + B - (A & B)
Run Code Online (Sandbox Code Playgroud)
但它效率低下,因为我正在添加两个数组,然后删除常用元素.它类似于寻找非交叉元素.我可以做得比这更好吗?如果是这样,怎么样?
什么Ruby或Rails的DSL将格式的字符串"mccdougal"
来"McDougal"
,并在同一时间离开的字符串"McDougal"
作为是什么?
传递titleize
给"McDougal"
以下结果:
"McDougal".titleize # => "Mc Dougal"
Run Code Online (Sandbox Code Playgroud)