什么“?”做?什么是__FILE__?

时间:2010-11-04 14:06:35

标签: ruby

随机的轨道/红宝石问题,非常感谢。

困惑于第二个'?'意思是在行:

@page ||= params[:page].blank? ? 1 : params[:page].to_i

在init.rb文件中, FILE 的确做什么?

require File.join(File.dirname(__FILE__), "rails", "init")

2 个答案:

答案 0 :(得分:7)

第一个?是方法名称的一部分,这是一种用于返回布尔结果的方法的约定。

第二个?是内联条件运算符:

a ? b : c

相当于

if a then
  b
else
  c
end

__FILE__是一个返回当前文件文件名的内核函数。 File.dirname(__FILE__)只会返回当前文件的目录名,而File.joinArray#join与操作系统特定的目录分隔符(Linux / OSX上的/和{\相同Windows上的1}}

答案 1 :(得分:3)

1)这是一个三元表达,第二个问号基本上是“然后”,它后面的冒号基本上是“其他”。整件事可以改写:

if params[:page].blank?
  1
else
  params[:page].to_i
end

2)__FILE__是对当前文件的引用,在本例中为init.rb