小编And*_*imm的帖子

Ruby - 初始化对象时设置属性值

鉴于以下课程:

class Test
  attr_accessor :name
end
Run Code Online (Sandbox Code Playgroud)

当我创建对象时,我想执行以下操作:

t = Test.new {Name = 'Some Test Object'}
Run Code Online (Sandbox Code Playgroud)

目前它导致名称nil仍然存在.这可能吗?

注意:我不想添加初始化程序.

ruby

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

为什么relative_require不能在Ruby 1.8.6上运行?

我在Windows 7上学习Ruby(使用版本1.8.6).

当我尝试运行下面的stock_stats.rb程序时,我收到以下错误:

C:\Users\Will\Desktop\ruby>ruby stock_stats.rb
stock_stats.rb:1: undefined method `require_relative' for main:Object (NoMethodE
rror)
Run Code Online (Sandbox Code Playgroud)

我有三个v.small代码文件:

stock_stats.rb

require_relative 'csv_reader'

reader = CsvReader.new

ARGV.each do |csv_file_name|
  STDERR.puts "Processing #{csv_file_name}"
  reader.read_in_csv_data(csv_file_name)
end

puts "Total value = #{reader.total_value_in_stock}"
Run Code Online (Sandbox Code Playgroud)

csv_reader.rb

require 'csv' 
require_relative 'book_in_stock'

class CsvReader

  def initialize
    @books_in_stock = []
  end

  def read_in_csv_data(csv_file_name)
    CSV.foreach(csv_file_name, headers: true) do |row|
      @books_in_stock << BookInStock.new(row["ISBN"], row["Amount"])
    end
  end  

  # later we'll see how to use inject to sum a collection
  def total_value_in_stock
    sum = 0.0        
    @books_in_stock.each {|book| …
Run Code Online (Sandbox Code Playgroud)

ruby require

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

C++线程安全整数

我目前为线程安全整数创建了一个C++类,它只是私有地存储一个整数,并且公共获取一个使用boost :: mutex的set函数,以确保一次只能对整数应用一个变量.

这是最有效的方法,我被告知互斥量是非常耗费资源的吗?该课程使用频繁,非常迅速,因此很可能成为瓶颈......

谷歌C++线程安全整数返回不清楚的视图和oppinions在不同架构上的整数操作的线程安全性.

有人说,在32位拱32位int是安全的,但64对32是不是因为"对齐"还有人说,这是编译器/操作系统特定的(我不怀疑).

我使用Ubuntu 9.10在32台机器上,一些具有双核等线程可以同时在不同核心上在一些情况下执行,并且我使用GCC 4.4的克++编译器.

提前致谢...

请注意: 我标记为"正确"的答案最适合我的问题 - 但是在其他答案中有一些优点,它们都值得一读!

c++ multithreading integer thread-safety

17
推荐指数
2
解决办法
7544
查看次数

科学编程的再现性

除了产生不正确的结果之外,科学编程中最令人担忧的一个问题是无法重现您生成的结果.哪些最佳实践有助于确保您的分析具有可重现性?

scientific-computing

17
推荐指数
5
解决办法
1087
查看次数

睡觉,直到红宝石的情况属实

在某些条件成立之前,Ruby有没有更好的方法可以睡觉?

loop do 
  sleep(1)
  if ready_to_go
    break
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby

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

私有方法称为错误

写了一个方法; 当我尝试运行它时,我收到错误:

NoMethodError: private method ‘subtotal’ called for 39.99:Float
at top level    in grades.rb at line 9
Program exited with code #1 after 0.04 seconds.
Run Code Online (Sandbox Code Playgroud)

以下是代码:

def subtotal(qty = 1)
  return nil if self.to_f <= 0 || qty.to_f <= 0
  self.to_f * qty.to_f
end

book = 39.99
car = 16789

puts book.subtotal(3)
puts car.subtotal
puts car.subtotal(7)
Run Code Online (Sandbox Code Playgroud)

ruby

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

Java退出代码和含义

是否有退出代码列表和Java进程终止的含义?因为我有一个退出代码23,我不知道它是什么(我无法更改日志以查看完整的堆栈跟踪,因为它位于不同的远程服务器).

我浏览了几个小时,找不到退出代码23.

java process exit-code

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

用索引无限次地做一些事情

做项目euler#2的更多ruby方式中,部分代码是

while((v = fib(i)) < 4_000_000)
  s+=v if v%2==0
  i+=1
end
Run Code Online (Sandbox Code Playgroud)

有没有办法改变i += 1成更具功能性的编程风格结构?

我能想到的最好的是

Float::MAX.to_i.times do |i|
  v = fib(i)
  break unless v < 4_000_000
  s += v if v%2==0
end
Run Code Online (Sandbox Code Playgroud)

因为你不能调用.times浮点数.

ruby infinity lazy-sequences

16
推荐指数
3
解决办法
6603
查看次数

所有分支(甚至远程)的范围的Git日志

我正在尝试以下方面

git log --before {2.days.ago} --after {14.days.ago} --all --stat
Run Code Online (Sandbox Code Playgroud)

但它似乎只给我一个远程分支的日志.我想获取远程和本地分支的日志.

git git-log

16
推荐指数
2
解决办法
3293
查看次数

指定对象在RSpec中不接收任何消息

我知道如何指定对象不应该收到特定的消息:

expect(File).to_not receive(:delete)
Run Code Online (Sandbox Code Playgroud)

我如何指定它根本不应该收到任何消息?就像是

expect(File).to_not receive_any_message
Run Code Online (Sandbox Code Playgroud)

ruby rspec

16
推荐指数
1
解决办法
4459
查看次数