Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Noriaki Horiuchi
    @NoriakiHoriuchi
    開設しました
    またこちらは要望なのですが、「可変長引数パターンは、match式で可変長引数を取り出すために使用する」という表現について、使えるところはmatch式に限らずパターンマッチが使える所全てで利用可能なため、「match式で」を「パターンマッチで」等に変更をご検討いただけないでしょうか?
    初学者に見られる勘違いとしてパターンマッチ == match式 というものがあり、この誤解を促進するような表現は避けたいなーというのがあります。
    ご検討いただけましたら幸いです
    Noriaki Horiuchi
    @NoriakiHoriuchi

    該当箇所確認中です!

    使えるところはmatch式に限らずパターンマッチが使える所全てで利用可能

    これは本当にそのとおりだと思いますので検討します!ありがとうございます〜!

    Manabu Nakamura
    @gakuzzzz
    :smile:
    Manabu Nakamura
    @gakuzzzz
    @NoriakiHoriuchi ちなみに質問なんですが、Dotty だと as pattern (@使うやつ) そのものが無くなったんですか? それとも可変長シーケンスパターンが必ず変数パターンとセットで使う必要があるだけで as pattern そのものが無くなった訳ではない感じでしょうか? 記事読むとまるで as pattern 自体が無くなったように読めてしまったので……
    Manabu Nakamura
    @gakuzzzz

    Dotty の reference みる限り as pattern そのものは残ってる感じですね。
    https://dotty.epfl.ch/docs/reference/changed-features/pattern-matching.html#boolean-match
    現状だと @ そのものが使われなくなるかのように読めてしまうので表現を修正した方が良さそうに思いました。

    たぶん case xs @ Seq(1, ys:_*) => は Dotty でも valid なパターンと思われます。

    Noriaki Horiuchi
    @NoriakiHoriuchi
    そうですね。実際今確認しましたが確かに使えます。
    @に言及しようとした当初の意図よりもだいぶ広い範囲に掛かってしまっているので修正します!
    Manabu Nakamura
    @gakuzzzz
    :+1:
    Noriaki Horiuchi
    @NoriakiHoriuchi

    一番問題なのはこの箇所ですよね

    @記号というのはScalaではあまり用いられないので、特別な記法として覚える必要がありました。

    言うてもパターンマッチやってると as pattern わりと使うので「あまり用いられないので」が間違いですね

    Manabu Nakamura
    @gakuzzzz
    ですです。そうなんですよね。たしかに利用頻度は少ないのですが、でも全く使わないわけでもないしなー という
    Noriaki Horiuchi
    @NoriakiHoriuchi

    もう一つはここですね。

    「これと同様の意味合いの内容だが、パターンマッチにおいては@記号で書く」という、Scalaにおいて珍しい記法が無くなりました。

    「Scalaにおいて」ってのが言い過ぎなのでこれをもう少し狭めてみます

    Manabu Nakamura
    @gakuzzzz
    ですね。あくまで可変長シーケンスパターンと as パターンは別物で、 Scala2では可変長シーケンスパターンにマッチした値を右辺で使いたい場合に as パターンと組み合わせて使う必要があった。 これが Dotty では 可変長シーケンスパターンが必ずvariable パターンor wildcardパターンと組み合わせて使う事が強制されるようになったので、as パターンと組み合わせて使う必要がなくなった
    というのが実態のように思われます
    Noriaki Horiuchi
    @NoriakiHoriuchi
    あーなるほど!
    https://scalapedia.com/articles/121 ちょっと変更してみましたがどうでしょう???
    Manabu Nakamura
    @gakuzzzz

    そして、3.1-migrationを有効にすると、コンパイル時に@を使う書き方から:を使う書き方への移行を促す情報を表示することができます。

    これおそらく @ 使う使わないに関わらず既存の可変長シーケンスパターンを : 使う書き方へ移行する必要があるんですよね

    「これと同様の意味合いの内容だが、パターンマッチにおいてのみ@記号で書く」という、特殊な記法がなくなりました。

    という1文ばっさり削ってしまってもいいかもですね?

    Manabu Nakamura
    @gakuzzzz
    list match {
      case List(1, 2, xs @ _*) => ???
      case List(1, 2, _*) => ???
    }

    の例として

    list match {
      case List(1, 2, xs @ _*) => println(s"3番目以降: $xs")
      case List(1, _ @ _*) => println(s"1個だけ")
      case _ => println(s"空")
    }

    が続きますが _*_ @ _* になってる意図が掴めない気がしますね

    Noriaki Horiuchi
    @NoriakiHoriuchi
    よさそう!!明日やりますね!
    ありがとうございます!!!
    Manabu Nakamura
    @gakuzzzz
    :+1: いろいろと小うるさくてすみません! Scalapedia応援してます!
    Noriaki Horiuchi
    @NoriakiHoriuchi
    いや正直めっちゃありがたいです!!やる気出ますね!!がんばります!!
    Noriaki Horiuchi
    @NoriakiHoriuchi
    修正しました〜〜〜
    あと「可変長引数パターン」の「引数」という訳語が果たして適切なのかという疑問はありますが一旦そのままにしておきます
    適切でもないんだけど他にあるかというと微妙かなあという感じで今に至ります
    Manabu Nakamura
    @gakuzzzz
    拝見いたしました! 違和感なくなりました :ok_woman: ご対応ありがとうございます!
    たしかに……<適切でもないんだけど他にあるかというと微妙かなあという感じ
    Tsuyoshi Yoshizawa
    @tsuyoshizawa

    Scala の記事参考にしています!こちらの記事でリンクがおかしいものに気づいたので共有しておきます。
    https://scalapedia.com/articles/102/%E6%AC%A1%E4%B8%96%E4%BB%A3Scala%E3%80%8CDotty%E3%80%8D+3%E3%81%A4%E3%81%AE%E3%81%AD%E3%82%89%E3%81%84%E3%83%BB7%E3%81%A4%E3%81%AE%E6%96%B0%E3%81%97%E3%81%95%E3%82%92%E3%81%94%E7%B4%B9%E4%BB%8B

    参考:[this]修飾子:Scala 3で廃止予定の機能(12)

    Noriaki Horiuchi
    @NoriakiHoriuchi
    いつもありがとうございます!確かにおかしいですね。修正します!
    Tsuyoshi Yoshizawa
    @tsuyoshizawa
    いえいえ〜ありがとうございます