需要帮助在Ruby中编写生日消息

时间:2014-01-12 22:53:06

标签: ruby

所以我男朋友的20岁生日即将到来,他是一名程序员,所以我想我会用红宝石代码为他做个蛋糕,上面写着“20岁生日快乐,凯尔”。我还想给他一张卡片,上面写着“特别书呆子的生日快乐”,再次用红宝石代码。

感谢您花时间阅读本文。这对我来说意义重大。

7 个答案:

答案 0 :(得分:5)

我喜欢mechanlicalfish对卡片的回答,但对于蛋糕,我建议:

@my_special_nerd = "Kyle"
puts "Happy Birthday #{@my_special_nerd}"

您知道,@my_special_nerd = "Kyle"使用String Kyle分配一个名为special nerd的变量。有点像你在代数中学到的x =,但你可以把句子放在右边。

puts告诉程序将程序打印到标准输出,这通常是程序员的屏幕。

"Happy Birthday ..."是一个字符串。字符串是我们存储程序员可以阅读的句子的方式。

"Happy Birthday #{@my_special_nerd}"所以#{@my_special_nerd}告诉Ruby将变量@my_special_nerd替换为Kyle值。

如果使用Ruby运行程序,它将打印到程序员的屏幕:

Happy Birthday Kyle

答案 1 :(得分:4)

输出一些文本的Ruby命令是puts,即puts "happy 20th birthday, Kyle"。如果你想要一个稍微更讨厌和更少乏味的变体,请使用ap命令,它代表 awesome print

ruby -r awesome_print -e 'ap "happy 20th birthday, Kyle"'

用不同颜色的双引号编写部分(还要注意嵌套的单引号和双引号),因为这是ap的用途:结构化的彩色输出。玩得开心:)。

答案 2 :(得分:4)

对于蛋糕,我会选择kopischke的答案,但对于有更多地方的卡片,我会选择这样做:

class Card
  attr_accessor :event, :person

  def initialize(event, person)    
    @event = event
    @person = person
  end

  def message
    "Happy #{event} to a #{person}!"
  end
end

card = Card.new('birthday', 'special nerd')
puts card.message

以下是编辑器中用于更好语法突出显示的方式:

card for Kyle in Sublime Text

答案 3 :(得分:3)

如果你问我,我会在蛋糕上写这样的东西,更多的UNIX-y和更讨厌的东西。此外,模块比类更具特定于ruby,因此:

$ cat > kyle.rb
module Bday
  def self.kyle
    "Happy 20th birthday, Kyle"
  end
end
puts Bday.kyle

^C
$ ruby kyle.rb

然后对于卡片,我不知道真的知道。也许用base64或XOR编码的东西(取决于我们谈论的Geek的级别)可能更有趣。或简单的md5sum-ed消息,以便他必须执行一种暴力来查找。

只是一个想法: - )

答案 4 :(得分:1)

试试这个:

print "Happy Birthday!"

答案 5 :(得分:1)

蛋糕:

p "ibqqz!#{0x1f}ui!cjsuiebz-!Lzmf".chars.map {|c| (c.ord-1).chr}.join

和卡片:

p "ibqqz!cjsuiebz!up!b!tqfdjbm!ofse".chars.map {|c| (c.ord-1).chr}.join

这些将分别显示

"happy 20th birthday, Kyle"

"happy birthday to a special nerd"

如果你想“快乐”大写。用“我”

替换开头的'i'

答案 6 :(得分:0)

另一种可能性:

class Song
  attr_accessor :lyrics
  def initialize
    @lyrics = []
  end
  def play
    @lyrics.each {|line| puts line}
  end
end

name = "Bubba"
age = 0x14  
song = Song.new
song.lyrics << "Happy #{age}th birthday to you"
song.lyrics << song.lyrics.first
song.lyrics << "Happy birthday, dear #{name}, happy birthday to you"
song.lyrics << song.lyrics.first
song.play

不幸的是,这只适用于Bubba的。 song.play会导致显示以下内容:

Happy 20th birthday to you
Happy 20th birthday to you
Happy birthday, dear Bubba, happy birthday to you
Happy 20th birthday to you

0x14是十进制数20的十六进制表示。