小编Ste*_*fan的帖子

Ruby 中的 attr_accessor 和元编程

嗨,我想通过一些配置文件动态地初始化 ruby​​ 对象实例的属性,我可以使用以下代码快速完成:

class ApiTester

  def initialize(path= "api_test")
    h = eval(File.open("#{path}/config.hash","r").read)
    h.each do |k,v|
      eval("@#{k}=#{v.class == String ? "\"#{v}\"" :  v }" )
    end
  end

end
Run Code Online (Sandbox Code Playgroud)

如何为属性“@#{k}”提供属性 attr_accessor?

ruby metaprogramming attr-accessor

0
推荐指数
1
解决办法
778
查看次数

使用Ruby中的相同模块多次扩展对象

给定一个类Klassk这个类的实例:

class Klass
  def hello
    'Hello'
  end
end

k = Klass.new
k.hello        #=> "Hello"
Run Code Online (Sandbox Code Playgroud)

我可以extend使用模块将此实例添加到此特定实例,而无需更改整个类(即所有实例):

module Mod
  def hello
    "#{super}, World!"
  end
end

k.extend(Mod)
k.hello        #=> "Hello, World!"
Run Code Online (Sandbox Code Playgroud)

但是如果我k使用相同的模块多次扩展会发生什么?

k.extend(Mod)
k.extend(Mod)
k.extend(Mod)
k.hello        #=> "Hello, World!"
Run Code Online (Sandbox Code Playgroud)

是后续调用被忽略还是对象被多次扩展?

换句话说:多次扩展对象是否"安全"?

ruby

0
推荐指数
2
解决办法
624
查看次数

Chaning Ruby regexp运算符

我正在编写一个过滤程序,它读取包含地址数据的CSV文件,并排除位于新月(cres),avenue(ave)或place(pl)中的行.

这是一些示例输入:

data = <<CSV
ID,Street address,Town,Valuation date,Value
1,1 Northburn RD,WANAKA,1/1/2015,280000
2,1 Mount Ida PL,WANAKA,1/1/2015,280000
3,1 Mount Linton AVE,WANAKA,1/1/2015,780000
4,1 Centre CRES,WANAKA,1/1/2015,295000
CSV

require 'csv'

elements = []
CSV.parse(data, headers: true, header_converters: :symbol) do |row|
  elements << row.to_h
end
elements
#=> [
#     {:id=>"1", :street_address=>"1 Northburn RD", :town=>"WANAKA", :valuation_date=>"1/1/2015", :value=>"280000"},
#     {:id=>"2", :street_address=>"1 Mount Ida PL", :town=>"WANAKA", :valuation_date=>"1/1/2015", :value=>"280000"},
#     {:id=>"3", :street_address=>"1 Mount Linton AVE", :town=>"WANAKA", :valuation_date=>"1/1/2015", :value=>"780000"},
#     {:id=>"4", :street_address=>"1 Centre CRES", :town=>"WANAKA", :valuation_date=>"1/1/2015", :value=>"295000"}
#   ]
Run Code Online (Sandbox Code Playgroud)

我可以使用简单的正则表达式来过滤三个中的一个,即/pl/ …

ruby regex

0
推荐指数
1
解决办法
34
查看次数

使用IRB时,=>运算符左侧的意义是什么?

我正在测试scan方法,试图更好地理解它.我在命令行中使用IRB来测试它,使用ruby文档中提供的示例:

a = "cruel world"
a.scan(/(.)(.)/) {|x,y| print y, x }
Run Code Online (Sandbox Code Playgroud)

应该返回:

rceu lowlr
Run Code Online (Sandbox Code Playgroud)

好吧,当我运行它时,它确实返回rceu lowlr=> "cruel world":

$ irb
irb(main):001:0> a = "cruel world"
=> "cruel world"
irb(main):002:0> a.scan(/(.)(.)/) {|x,y| print y, x }
rceu lowlr=> "cruel world"
irb(main):003:0>
Run Code Online (Sandbox Code Playgroud)

通常在使用IRB时,左侧=>是空白,右侧是返回值.在这种情况下,左侧是返回值...而右侧只是...如果拼写正确,返回值是多少?为什么?

ruby

0
推荐指数
1
解决办法
57
查看次数

Ruby: stringA.gsub(/\s+/, '') 与 stringA.strip

string = "Johnny be good! And smile   :-) "
Run Code Online (Sandbox Code Playgroud)

之间有区别吗

string.gsub(/\s+/, '')
Run Code Online (Sandbox Code Playgroud)

string.strip
Run Code Online (Sandbox Code Playgroud)

如果是的话,那是什么?

ruby ruby-on-rails

0
推荐指数
1
解决办法
1777
查看次数

HAML 中的左尖括号和右尖括号

%strong><= 5我在源代码中发现了类似的东西。

><左尖括号在 HAML 中起什么作用?

ruby haml

0
推荐指数
1
解决办法
391
查看次数

ruby如何分割(':')并返回2/3分割部分

message_id = 'apple:grape:honey'
access_token = message_id.split(':')[1]
#=> "grape"
Run Code Online (Sandbox Code Playgroud)

我想回来 'grape:honey'

怎么做?请帮帮我

ruby ruby-on-rails

0
推荐指数
1
解决办法
115
查看次数

Ruby中的格式化日期

我有一个以字符串形式返回的日期:

date_str = "2018-08-17"
Run Code Online (Sandbox Code Playgroud)

我如何将其格式化为另一种标准日期格式,例如.17.8/2018以编程方式无需手动解析字符串?

ruby string format time date

0
推荐指数
1
解决办法
79
查看次数

如何将此数组转换为哈希

我有一个像这样的数组

['project','AAA','Division','BBB','TestingType','CCC','Email','abc@gmail.com','def'@gmail.com','efg@gmail.com',...]
Run Code Online (Sandbox Code Playgroud)

电子邮件数量各不相同。并且可能还会有一些内容输入,例如,'project','AAA','Time','2323','Division','BBB','TestingType','CCC'现在您可能已经注意到,输入了Time和2323,所以结果哈希值也必须包含'Time'=>'2323'。但是无论如何,电子邮件将在最后。

我想将此数组转换为这样的哈希

resultHash = {
  'project' => 'AAA',
  'Division' => 'BBB',
  'TestingType' => 'CCC',
  'Email' => ['abc@gmail.com', 'def@gmail.com', 'efg@gmail.com']
}
Run Code Online (Sandbox Code Playgroud)

对我而言,这里的困难在于,电子邮件计数每次都不同。有人可以如上所述将这个数组转换为所需的哈希吗?

ruby

0
推荐指数
1
解决办法
71
查看次数

0
推荐指数
1
解决办法
89
查看次数

标签 统计

ruby ×10

ruby-on-rails ×3

attr-accessor ×1

date ×1

format ×1

haml ×1

metaprogramming ×1

regex ×1

string ×1

time ×1