标签: ruby

Monad相当于Ruby

Ruby中等效构造的monad会是什么?

ruby monads functional-programming

39
推荐指数
3
解决办法
6397
查看次数

复制文件,在Ruby中根据需要创建目录

假设我有一个文件/source.txt,我想将其复制到/a/b/c.txt./a并且/a/b可以或可以不存在.

有没有办法复制文件,并在必要时创建必要的父目录?

理想情况下,这将是一个命令.特别是,我想避免解析目标路径的文件/目录部分,然后手动调用FileUtils.mkdir_pFileUtils.cp.

纯Ruby是首选,但Rails依赖的解决方案是可以接受的.

ruby

39
推荐指数
1
解决办法
4万
查看次数

在gem中放置/访问配置文件的位置?

我正在编写我的第一个gem,我希望用户通过config.yml文件检索和设置特定选项.

这个文件应放在我的gem文件结构中的哪个位置以及有人在安装我的gem时如何修改文件?我猜他们可以在安装gem时传递特定的选项,这些选项可以映射到config.yml文件,但这怎么可能?

另外,是通过YAML.load_file检索文件的最佳方法吗?

我看过Ryan关于通过Bundler创建宝石的轨道广播,但他没有涉及这个话题.

ruby gem yaml config

39
推荐指数
2
解决办法
1万
查看次数

将方法应用于array/enumerable中的每个元素

这是我的阵列:

array = [:one,:two,:three]
Run Code Online (Sandbox Code Playgroud)

我想将to_s方法应用于我的所有数组元素array = ['one','two','three'].

我该怎么做(将可枚举的每个元素转换为其他元素)?

ruby arrays enumerable

39
推荐指数
4
解决办法
4万
查看次数

将参数传递给erb视图

我正在尝试使用Ruby和Sinatra将参数传递给erb视图.

例如,我可以这样做:

get '/hello/:name' do
  "Hello #{params[:name]}!"
end
Run Code Online (Sandbox Code Playgroud)

我如何传递:name给视图?

get '/hello/:name' do
  erb :hello
end
Run Code Online (Sandbox Code Playgroud)

我如何读取view/hello.erb中的参数?

谢谢!

ruby erb sinatra

39
推荐指数
2
解决办法
4万
查看次数

Ruby的Object#taint和Object#trust方法是什么?

我正在阅读文档中关于Ruby字符串方法的内容,并且涉及到各种方法

  • taint
  • trust
  • untaint
  • untrust

我不知道他们做了什么,我们使用它们的情况如何?有人用过它们吗?例子很好.

ruby

39
推荐指数
2
解决办法
6639
查看次数

使用Ruby,我如何迭代for循环n次

我有一个基本的ruby循环

for video in site.posts
  video.some_parameter
endfor
Run Code Online (Sandbox Code Playgroud)

我想运行这个循环2或3次.

这可能吗?

ruby for-loop

39
推荐指数
3
解决办法
5万
查看次数

将CSV文件转换为哈希数组

我有一个csv文件,一些曲棍球统计数据,例如:

09.09.2008,1,HC Vitkovice Steel,BK Mlada Boleslav,1:0 (PP)
09.09.2008,1,HC Lasselsberger Plzen,RI OKNA ZLIN,6:2
09.09.2008,1,HC Litvinov,HC Sparta Praha,3:5
Run Code Online (Sandbox Code Playgroud)

我想将它们保存在一组哈希中.我没有任何标题,我想为每个值添加键"time" => "09.09.2008"等等.每行应该是可访问arr[i]的,例如每个值arr[i]["time"].我更喜欢CSV上课而不是FasterCSVsplit.你可以显示方式或重定向到一个解决类似问题的线程吗?

ruby csv multidimensional-array

39
推荐指数
5
解决办法
4万
查看次数

类中的Ruby类(或模块中的模块)

当我阅读不同的Ruby书籍时,我注意到Ruby类可以在其他Ruby类或模块中定义.以下是类中类的示例:

class Outerclass
  def foobar
    puts "FOOBAR"
  end

  class Innerclass   
    def barfoo
      puts "BARFOO"
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

这是我在IRB中运行的一些代码,试图从概念上理解这一点:

oc = Outerclass.new # => #<Outerclass:0x00000100a46478>

Outerclass.instance_methods(false) # => [:foobar]

ic = Outerclass::Innerclass.new # => #<Outerclass::Innerclass:0x00000100a0b120>

ic = Outerclass::Innerclass.instance_methods(false) # => [:barfoo]
Run Code Online (Sandbox Code Playgroud)

这是我的问题:

  1. 当ruby解释器第一次遇到我上面的类定义代码时,它是否会通过我编写的方法并将其存储在某个地方?我知道实例方法"foobar"实际上并没有运行,因为在Outerclass定义中没有调用它.

  2. 撇开第一个问题,当Ruby遇到类Innerclass时怎么样?这里发生了什么?

  3. 一般来说,为什么你想要在类中有类?这样做有什么好处吗?

  4. Outerclass的实例是否知道有关类Innerclass的任何内容?

  5. Innerclass的一个实例是否知道类Outerclass的任何内容?

感谢您提供的任何帮助!

ruby

39
推荐指数
1
解决办法
2万
查看次数

Ruby 2中的命名参数

我不完全理解Ruby 2.0中的命名参数是如何工作的.

def test(var1, var2, var3)
  puts "#{var1} #{var2} #{var3}"
end

test(var3:"var3-new", var1: 1111, var2: 2222) #wrong number of arguments (1 for 3) (ArgumentError)
Run Code Online (Sandbox Code Playgroud)

它被视为哈希.这很有趣因为在Ruby 2.0中使用命名参数我必须为它们设置默认值:

def test(var1: "var1", var2: "var2", var3: "var3")
  puts "#{var1} #{var2} #{var3}"
end

test(var3:"var3-new", var1: 1111, var2: 2222) # ok => 1111 2222 var3-new
Run Code Online (Sandbox Code Playgroud)

这与Ruby之前使用默认参数值的行为非常相似:

def test(var1="var1", var2="var2", var3="var3")
  puts "#{var1} #{var2} #{var3}"
end

test(var3:"var3-new", var1: 1111, var2: 2222) # ok but ... {:var3=>"var3-new", :var1=>1111, :var2=>2222} var2 var3
Run Code Online (Sandbox Code Playgroud)

我知道为什么会这样,几乎是如何运作的.

但我只是好奇,如果我使用命名参数,我必须使用参数的默认值吗?

并且,有人可以告诉我这两者之间有什么区别吗? …

ruby ruby-2.0

39
推荐指数
6
解决办法
7万
查看次数