小编Sag*_*dya的帖子

Ruby:如何在不指向同一对象的情况下复制变量?

在Ruby中,如何复制变量以使原始更改不影响副本?

例如:

phrase1 = "Hello Jim"
phrase2 = phrase1
phrase1.gsub!("Hello","Hi")
p phrase2 #outputs "Hi Jim" - I want it to remain "Hello Jim"
Run Code Online (Sandbox Code Playgroud)

在这个例子中,两个变量指向同一个对象; 我想为第二个变量创建一个新对象,但最初它包含相同的信息.

ruby

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

如何使用随机数填充数组?

我试图填充四个元素的数组,正整数小于9.

这是我的代码:

generated_number=Array.new(4)#create empty array of size 4
generated_number.each do |random| #for each position in the array create a random number
  random=rand(10)
end
puts generated_number
Run Code Online (Sandbox Code Playgroud)

我不明白我错过了什么.

ruby

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

在rails中将字符串转换为Array

我从其他客户端发送一个数组,并收到它像这样: "[1,2,3,4,5]"

现在我只想将它转换为Array而不使用Ruby的eval 方法.我们可以使用任何Ruby的默认方法吗?

 "[1,2,3,4,5]" => [1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)

ruby json ruby-on-rails postman

13
推荐指数
3
解决办法
2万
查看次数

如何避免heredoc中的最后一个字符

在红宝石heredoc:

a = <<~TEXT
  asd
  asd
TEXT
Run Code Online (Sandbox Code Playgroud)

它会产生:

[21] pry(main)> a = <<~TEXT
[21] pry(main)*   asd
[21] pry(main)*   asd
[21] pry(main)* TEXT
=> "asd\n" + "asd\n"
Run Code Online (Sandbox Code Playgroud)

\n在字符串的末尾生成一个,如何避免这种情况?

ruby heredoc

9
推荐指数
1
解决办法
1026
查看次数

为什么只有有限数量的正则表达式捕获存储在`global_variables`中?

如果我匹配带有十个捕获的正则表达式:

/(o)(t)(th)(f)(fi)(s)(se)(e)(n)(t)/.match("otthffisseent")
Run Code Online (Sandbox Code Playgroud)

然后,因为$10,我得到:

$10 # => "t"
Run Code Online (Sandbox Code Playgroud)

但它缺少了global_variables.我得到(在irb会话中):

[:$;, :$-F, :$@, :$!, :$SAFE, :$~, :$&, :$`, :$', :$+, :$=, :$KCODE, :$-K, :$,,
 :$/, :$-0, :$\, :$_, :$stdin, :$stdout, :$stderr, :$>, :$<, :$., :$FILENAME,
 :$-i, :$*, :$?, :$$, :$:, :$-I, :$LOAD_PATH, :$", :$LOADED_FEATURES,
 :$VERBOSE, :$-v, :$-w, :$-W, :$DEBUG, :$-d, :$0, :$PROGRAM_NAME, :$-p, :$-l,
 :$-a, :$binding, :$1, :$2, :$3, :$4, :$5, :$6, :$7, :$8, :$9]
Run Code Online (Sandbox Code Playgroud)

这里只列出前九个:

$1, :$2, :$3, :$4, :$5, :$6, :$7, :$8, :$9
Run Code Online (Sandbox Code Playgroud)

这也得到以下证实:

global_variables.include?(:$10) # …
Run Code Online (Sandbox Code Playgroud)

ruby regex pseudo-globals

8
推荐指数
2
解决办法
326
查看次数

为什么Date类的新实例的默认年份等于-4712?

运行:

require 'date'
y = Date.new
puts "default year is #{y.year}"
Run Code Online (Sandbox Code Playgroud)

输出:

default year is -4712
Run Code Online (Sandbox Code Playgroud)

Date对象的年份默认为-4712有什么特别的原因吗?我想也许有一个技术(或传统)的原因.我用Google搜索这一点,看它的Ruby文档(2.2.3)上,我不能看到一个答案,为什么.

ruby

6
推荐指数
1
解决办法
95
查看次数

我如何证明Ruby`for`循环实际上是使用`each`方法实现的?

Eloquent Ruby(第21页,第一版,第六版)中,作者(Russ Olsen)主张使用该each方法而不是for循环,这与我在其他地方阅读的所有内容一致.

然而,作者还接着说,这样做的一个原因是for循环实际上调用了each方法,那么为什么不切断中间人并使用each呢?所以我想知道这实际上是如何工作的.

为了调查我确实搜索了github上的Ruby repo,但发现很难确定我在哪里/如何看到这个行动.

重申一下这个问题:

如何显示Ruby for循环实际上是使用该each方法实现的?

ruby each loops for-loop

5
推荐指数
1
解决办法
165
查看次数

除了"g"之外,如何用""替换字符串中的所有字符?

如何"g"从字符串中删除除字符之外的所有字符,数字和符号,并将其替换为" "

string = "bi2gger 1is 00ggooder"
Run Code Online (Sandbox Code Playgroud)

ruby

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

Ruby对象数组

创建一个具有构造函数和方法的类Square来计算正方形的面积.

class Square
  def initialize(side)
    @side = side
  end

  def printArea
    @area = @side * @side
    puts "Area is: #{@area}"
  end
end
Run Code Online (Sandbox Code Playgroud)

创建2个对象并将它们添加到数组中

array = []
array << Square.new(4)
array << Square.new(10)

for i in array do
  array[i].printArea
end
Run Code Online (Sandbox Code Playgroud)

我如何访问数组中的对象?我收到一个错误:没有将Square隐式转换为整数.

ruby object

3
推荐指数
1
解决办法
101
查看次数

Rails教程(M.Hartl)第3版,第8章,为什么应用程序无法忘记登录状态?

登录到应用程序然后完全关闭浏览器后,我重新打开希望注销的浏览器.但是我还在登录?

我在8.2.3节中更改布局链接,除此之外,应用程序按预期运行并运行.代码也是教程中的代码.我认为这些是相关文件:

应用程序/佣工/ sessions_helper.rb

module SessionsHelper

  # Logs in the given user.
  def log_in(user)
    session[:user_id] = user.id
  end

  # Returns the current logged-in user (if any).
  def current_user
    @current_user ||= User.find_by(id: session[:user_id])
  end

  # Returns true if the user is logged in, false otherwise.
  def logged_in?
    !current_user.nil?
  end
end
Run Code Online (Sandbox Code Playgroud)

应用程序/控制器/ sessions_controller.rb

class SessionsController < ApplicationController

  def new
  end

  def create
    user = User.find_by(email: params[:session][:email].downcase)
    if user && user.authenticate(params[:session][:password])
      log_in user
      redirect_to user
    else
      flash.now[:danger] = 'Invalid …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails railstutorial.org

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