ruby-1.9.2-p180 :154 > a = []
=> []
ruby-1.9.2-p180 :154 > h = {:test => "test"}
=> {:test=>"test"}
ruby-1.9.2-p180 :155 > a << h
=> [{:test=>"test"}]
ruby-1.9.2-p180 :156 > h.clear
=> {}
ruby-1.9.2-p180 :157 > a
=> [{}]
Run Code Online (Sandbox Code Playgroud)
我很困惑,特别是因为我可以更改哈希的元素,而不会影响数组.但是当我清除哈希时,数组会被更新并清除其哈希内容.谁能解释一下?
foo是一个对象数组,bar是该对象的一个属性.
(rdb:1) foo.bar.map{|v| bar.v }
["a", "b", "c", "d", "e", "f"]
(rdb:1) foo.bar.each{|v| p bar.v }
[massive outpouring of object attributes]
Run Code Online (Sandbox Code Playgroud) 如果我有
ary = [7, 8, 0, 1, nil, 6]
Run Code Online (Sandbox Code Playgroud)
如何在数组中找到最大值的位置?我可以做到这一点,但它需要不止一行.
从RVM切换到系统ruby后,我不断收到此错误.它似乎没有影响任何东西,但当我尝试安装gem或使用irb时弹出.关于如何修复此问题的任何想法?这是在Mac 10.7上.
我有两个问题.
问题1.
我一直认为文件夹是一个自动命名空间,但我只是回过头来重构一些代码,结果是这样的:
让我感到惊讶的是,我不需要像过去那样在每个文件周围创建命名空间.喜欢:
Module Formatter
Class ActionFormatter
Run Code Online (Sandbox Code Playgroud)
这是因为存在于此文件夹中暗示了Module Formatter吗?在调用它时,我仍然需要将它作为Formatter :: ActionFormatter引用.但是为什么FooFormatter不需要这个参考.
问题2.
一切似乎都有效,但我收到了这个警告:
警告:在我所拥有的行上格式化Formatter :: FormatAction引用的常量FormatAction
@formatter = Formatter::ActionFormatter
Run Code Online (Sandbox Code Playgroud)
为什么是这样?
如果我有一个排序数组,我如何找到序列号?顺便说一句,这是用于确定扑克牌是否是直线牌.数组中的重复项已被删除.我可以做到这一点,但这将是一个多行方法,我认为可能有一个使用Enumerable方法的快速单行.
例如:
FindSequence([9,8,7,5,4]) = [9,8,7]
FindSequence([4,2,0]) = nil
Run Code Online (Sandbox Code Playgroud) 我已经删除了UIKit框架的导入,现在我收到了这个错误.我是否必须以某种方式重新编译框架?这不是真的给我任何东西......
如果它意味着什么,我能够在IOS中运行SDK示例,因此没有任何我不满足的系统要求.
ld: warning: ignoring file /Developer/SDKs/MacOSX10.7.sdk/Library/Frameworks//AWSiOSSDK.framework/AWSiOSSDK, missing required architecture x86_64 in file
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_AmazonS3Client", referenced from:
objc-class-ref in Constants.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud) 我有以下代码,用于在遇到错误时显示应用程序状态的报告.
begin
... # makes calls to lower level instances
rescue
send_report
end
def send_report
str = ""
str.concat("#{$!}\n\r")
str.concat("Report ----------\n\r")
...
raise str
end
Run Code Online (Sandbox Code Playgroud)
问题是$!只给我一行错误,没有任何通常的堆栈跟踪.一个示例错误是:
DEBUG - undefined method `to_sym' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
这显示没有文件名或行号或任何上下文.如何添加?
我有一个难以理解的难题.
在rails控制台中,如果我使用
@o = ObjName.where(o_id: "VAL")
Run Code Online (Sandbox Code Playgroud)
我没有得到一个返回的对象.我得到了这个:
=> #<Mongoid::Criteria
selector: {:conditions=>{:site_id=>"PST"}},
options: {},
class: Site,
embedded: false>
Run Code Online (Sandbox Code Playgroud)
但如果我使用:
@o = ObjName.first(:conditions => {:o_id => "VAL"})
Run Code Online (Sandbox Code Playgroud)
我做.在Mongoid中使用函数,我的模型包括Mongoid.所以我不明白为什么这不起作用.
def match_line regex
@line.match(regex) if !regex.is_a?(Array)
regex.each {|rgx|
results = @line.match(rgx)
return results if !results.nil?
}
return nil
end
Run Code Online (Sandbox Code Playgroud)
这看起来像是可以用一行惯用的方式完成的,我只是没有看到如何.