为了n从字符串中获取最后一个字符,我假设您可以使用
ending = string[-n..-1]
Run Code Online (Sandbox Code Playgroud)
但是如果字符串长度小于n字母,那么你就得到了nil.
有哪些变通方法?
背景:字符串是纯ASCII,我可以访问ruby 1.9.1,我使用的是Plain Old Ruby Objects(没有Web框架).
我正在处理一个基于记录的文本文件:所以我正在寻找一个构成记录开头的起始字符串:没有记录结束标记,所以我使用下一条记录的开头来划分最后一项记录
所以我已经构建了一个简单的程序来实现这一点,但是我看到一些让我感到惊讶的事情:看起来Ruby似乎忘记了局部变量 - 或者我发现了编程错误?[虽然我不认为我有:如果我在循环之前定义变量'message'我没有看到错误].
这是一个简单的示例,其中包含示例输入数据和注释中的错误消息:
flag=false
# message=nil # this is will prevent the issue.
while line=gets do
if line =~/hello/ then
if flag==true then
puts "#{message}"
end
message=StringIO.new(line);
puts message
flag=true
else
message << line
end
end
# Input File example:
# hello this is a record
# this is also part of the same record
# hello this is a new record
# this is still record 2
# hello this is record 3 etc etc
#
# …Run Code Online (Sandbox Code Playgroud) 这里发生了什么?两种形式"除非"之间的细微差别是什么?
> irb(main):001:0> foo = true unless defined?(foo)
=> nil
irb(main):002:0> unless defined?(fooo) ; fooo = false ; end
=> false
Run Code Online (Sandbox Code Playgroud)
谢谢
我在这里从根本上误解了Ruby吗?我已经写了大约2年的Ruby代码了,就在今天偶然发现了......
ruby-1.8.7-p249 > i = true and false
=> false
ruby-1.8.7-p249 > i
=> true
Run Code Online (Sandbox Code Playgroud)
有人能解释一下这里发生了什么吗?我确定这是规格,但这对我来说似乎有点直观......
我是这门语言的新手,我需要知道为了使用Ruby编程语言创建功能齐全的网站或Web应用程序,必须知道的最重要的事情是什么?
主要是带有Rake的Ruby on Rails和其他主要使用Rake的工具.
更新:我知道很多其他语言,如C++,Java,PHP,Perl等等....
更新2:这很棒......让他们来吧!
>> current_user.first_visit
=> 0
>> if current_user.first_visit
>> puts "test"
>> end
test
=> nil
Run Code Online (Sandbox Code Playgroud)
为什么打印测试?
对不起,如果这是一个愚蠢的问题,但我是一个C#家伙摸索着红宝石的方式..
在红宝石中,我注意到很多人这样做:
do_something(with params) if 1 = 1
Run Code Online (Sandbox Code Playgroud)
这和之间有什么区别(甚至是轻微的):
if 1 = 1 do_something(with params)
Run Code Online (Sandbox Code Playgroud)
还是为了更清晰而写的是同一件事?
如果选中"记住我"复选框,我想将cookie设置为1年后到期.
我有一个复选框表格输入,如:
<%= check_box_tag 'remember', '', false, :class => 'checkbox' %>
Run Code Online (Sandbox Code Playgroud)
发布后的价值是多少?
它是真/假或检查或1或?我在助手中将值设置为''.
我是这样做的test.rb:
def some_method
p "First definition"
end
def some_method
p "Second definition"
end
some_method
Run Code Online (Sandbox Code Playgroud)
当我打电话时ruby test.rb,打印Second definition(预期)
当我打电话时ruby -w test.rb,它打印Second definition(预期)并打印警告test.rb:5: warning: method redefined; discarding old some_method
有没有办法在Rails中启用这些警告?(并将警告打印到控制台/日志文件)
为什么我要启用警告:例如,如果我无意中在控制器中重新定义了一个方法,那么我会通过查看打印到控制台/日志文件的警告来了解该问题.请看这里的例子.
我的Rails应用程序中有一个if语句.我需要做一个基本的"if true and!false"检查.表达式定义为:
ActiveRecord::Base.connection.tables.include? 'settings' && !Settings.setting_is_set?('defaults_set')
Run Code Online (Sandbox Code Playgroud)
如果我把它作为我的表达式给if,那么if就不会触发.如果我在控制台中运行该表达式,我会得到错误.
现在,如果我将表达式修改为:
ActiveRecord::Base.connection.tables.include? 'settings' and not Settings.setting_is_set?('defaults_set')
Run Code Online (Sandbox Code Playgroud)
它应该返回true,并执行它的块.
所以问题是:为什么'表达式&&!表达式'不像'表达式而不是表达式'.这是我的理解&&和!应该和,而不是几乎直接对应.
我在这里错过了什么?
ruby ×9
conditional ×1
if-statement ×1
object ×1
rubygems ×1
string ×1
syntax ×1
undefined ×1
warnings ×1