进一步来说:
::(比如::Foo::Bar)Foo::Bar)编辑:我在谈论这样的事情
module Foo
THING = 'thing'
module Bar
puts THING
end
end
#=> thing
module Foo::Bar
puts THING
end
#=> NameError: uninitialized constant Foo::Bar::THING
Run Code Online (Sandbox Code Playgroud) 我有一个帐户模型如下(简化):
class Account < ActiveRecord::Base
attr_accessible :account_number, :display_name, :master_account_id
has_many :child_accounts, :class_name => "Account", :foreign_key => "id"
belongs_to :master_account, :class_name => "Account", :foreign_key => "master_account_id"
end
Run Code Online (Sandbox Code Playgroud)
@account.master_account目前工作正常,但我也希望能够访问@account.child_accounts- 我需要做些什么才能解决这个问题?
半字节是四位.这意味着有16(2 ^ 4)个可能的值.这意味着半字节对应于单个十六进制数字,因为十六进制是基数16.字节是2 ^ 8,因此可以用2个十六进制数字表示,因此可以用2个半字节表示.
所以下面我有一个1字节的字符:
'一个'
那个角色是2 ^ 8:
'A'.unpack('B*')
=> ["01000001"]
Run Code Online (Sandbox Code Playgroud)
这意味着它应该由两个十六进制数字表示:
01000001 == 41
Run Code Online (Sandbox Code Playgroud)
根据Ruby文档,对于Array方法包,当aTemplateString(参数)等于'H'时,它将返回一个十六进制字符串.但这就是我得到的回报:
['A'].pack('H')
=> "\xA0"
Run Code Online (Sandbox Code Playgroud)
我的第一点是它不应该返回的十六进制值.它应该返回十六进制值41.第二点是半字节的概念,正如我上面解释的那样,意味着1个字节,它应该返回两个半字节.但在它上面插入一个0,因为它认为输入只有1个半字节,即使'A'是一个字节并且有两个半字节.很明显我在这里遗漏了一些东西.
我有一个带有4个字符串的ruby数组
nucleotides = ['A', 'G', 'C', 'T']
Run Code Online (Sandbox Code Playgroud)
我需要4 ^ 3个字符串组合.
new_array = ['AGC', 'AGT' .. 'TTT']
Run Code Online (Sandbox Code Playgroud)
这是遗传学中的摆动假设.有人可以解释我如何使用红宝石实现这一目标.
我有以下代码将实例变量添加到单个实例:
class MyClass
def initialize(x)
@var = x
end
end
obj = MyClass.new(4)
obj.instance_variable_set(:@a, 5)
Run Code Online (Sandbox Code Playgroud)
是否可以动态添加attr_accessor属性,以便可以使用obj.a和obj.a = ...或必须使用instance_variable_get和instance_variable_set获取并设置它?
背景:我需要确定远程位置的记录数.记录按顺序编号(从无0间隙开始),并且只能根据其编号逐个获取.
该方法通过网络返回获取记录truthy在成功值和falsey失败时的价值.这是一个例子:
fetch_record(0) #=> true (record #0 exists)
fetch_record(1) #=> true (record #1 exists)
fetch_record(2) #=> true (record #2 exists)
fetch_record(3) #=> nil (no record #3)
Run Code Online (Sandbox Code Playgroud)
我试图找到一种优雅的方式来计算我可以fetch_record用增加的参数调用多少次,直到它返回nil(在上面的例子中为3次).
到目前为止我尝试过的
鉴于此测试目的的简化实现:
def fetch_record(index)
raise if index > 3 # just to prevent endless loops
true if index < 3
end
Run Code Online (Sandbox Code Playgroud)
以下是我的尝试:
一个while具有显式计数器变量循环显然会工作,但我看起来不是很地道:
i = 0
i += 1 while fetch_record(i)
i
#=> 3
Run Code Online (Sandbox Code Playgroud)我可以使用step和break显式结果值,但看起来很麻烦:
0.step(by: 1).each …Run Code Online (Sandbox Code Playgroud)我观察到计算天差的ruby表达式给出了不同的输出,这取决于表达式中的空格.
Date.today #=> #<Date: 2017-01-06 ((2457760j,0s,0n),+0s,2299161j)>
(Date.today - 60).to_s #=> "2016-11-07"
(Date.today-60).to_s #=> "2016-11-07"
(Date.today- 60).to_s #=> "2016-11-07"
(Date.today -60).to_s #=> "2017-01-06" <- ???
Run Code Online (Sandbox Code Playgroud)
谁能帮我理解背后的原因?
我正在做以下事情:
array_variable = collection.map do |param|
some value with param
end
return array_variable.compact
Run Code Online (Sandbox Code Playgroud)
我可以打电话map,并compact在某种程度上一条语句,这样我就可以立即返回结果?
我正在考虑这样的事情(但可能无效):
array_variable = block_code param.compact
# block_code here is a method for example which fills the array
Run Code Online (Sandbox Code Playgroud) Homebrew的这一行是什么意思?
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Run Code Online (Sandbox Code Playgroud)
我理解-e将在命令中包含ruby代码,但我没有得到该$()部分.美元符号支架在这里做什么?
而且非常重要的是,我在哪里可以找到相关文档?
我正在用 ruby 构建一个简单的面包屑,但我不确定如何真正实现我的逻辑。
假设我有一组取自我的单词,request.path.split("/) ["", "products", "women", "dresses"]
我想将字符串推入另一个数组,所以最后我有["/", "/products", "products/women", "products/women/dresses"],我将使用它作为我的面包屑解决方案。
我不擅长红宝石,但现在我想出了以下方法
cur_path = request.path.split('/')
cur_path.each do |link|
arr = []
final_link = '/'+ link
if cur_path.find_index(link) > 1
# add all the previous array items with the exception of the index 0
else
arr.push(final_link)
end
end
Run Code Online (Sandbox Code Playgroud)
结果应该是 ["/", "/products", "/products/women", "/products/women/dresses"]
ruby ×9
arrays ×1
associations ×1
constants ×1
date ×1
decoding ×1
hex ×1
pack ×1
permutation ×1
ruby-1.8.7 ×1
ruby-block ×1
syntax ×1
unpack ×1
whitespace ×1