始める無料で始める

複数ディスパッチ

複数ディスパッチはJuliaの大きな強みの1つで、プログラムに柔軟性と高速性をもたらします。複数ディスパッチでは、関数に渡された引数の型に応じて異なるメソッドを実行できることを思い出してください。

ビデオの例では、引数の型が文字列かどうかに応じて異なる値を返すために、複数ディスパッチを使っていました。

function add_values(x, y)
    x + y
end

function add_values(x::String, y::String)
    x * y
end

この演習はコースの一部です

Julia中級

コースを見る

演習の手順

  • 次の仕様の関数 largest_value を作成します。
    • 入力が String の場合は、map を使って各引数 (x, y, z)length 関数を適用します。
    • 入力が Bool の場合は、引数をそのまま返します。
    • それ以外の型の場合は、maximum を使ってすべての値の最大値を取得します。
  • 末尾のコメントアウトされた行(テストケース)を削除し、ロジックが正しく動くことを確認してください!

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Create three functions to handle any input, String input, and Bool input
function largest_value(x, y, z)
  maximum((____, ____, ____))
end

function largest_value(x::____, y::____, z::____)
  map(length, (____, ____, ____))
end

function largest_value(x::____, y::____, z::____)
  x, y, z
end

# Un-comment this test case to test your function
#println(largest_value("12", "24", "36"))
コードを編集して実行