Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

マルチスケールシミュレーション特論7

Mac OS X-10.15.7 ruby-2.7.1p83

if-elsif-else-end

講義ページリンク

チャート式ruby-III(if, case, array, each by leap year)

内容

Rubyにおける条件分岐の書き方

課題

入力された整数がうるう年かどうか表示するプログラムの作成

解答例

def leap?(year)
  (year % 400).zero? || !(year % 100).zero? && (year % 4).zero?
end

year = ARGV[0].to_i
p year
p leap?(year)

出力

> ruby check_leap_year.rb 2004
2004
true

> ruby check_leap_year.rb 1999
1999
false

> ruby check_leap_year.rb 1900
1900
false

> ruby check_leap_year.rb 2000
2000
true

NOTE

  • 上記のコードはRubocopでフォーマッティングした
    • LSPを使っているならRuby用のSolargraphというのがあるが,自分の環境(neovim + coc.nvim + coc-solargraph)では動作が不安定だったため見送り
    • Vimにはvim-rubocopというプラグインがあったので,本講義の課題のコードの解析ぐらいの用途ならこれで十分
    • ちなみに,ファイル保存時に自動でフォーマットするには,.vimrcにautocmd BufWritePost *.rb :RuboCop -Aと記述すればよい(いるのか知らんがvimmer only)
  • Rubocop基準では上記のようなフォーマットが望ましいようだ
    • booleanを返すメソッドには return を書かない
    • ==0 じゃなく .zero? でゼロ判定
    • 細かいことはスタイルシート参照
  • あとorgファイルで #+include: でインクルードしたソースコードにシンタックスが適用されない(なんで?)

  • source ~/multiscalesim_toku/grad_members_20f/members/lynd2299/mss7.org
lynd2299
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away