質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

1555閲覧

Java ラムダ式のセミコロンの要否

knhoge

総合スコア2

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

1クリップ

投稿2021/04/06 09:33

前提・実現したいこと

Java SE11 Silver資格の勉強中で、ラムダ式について不明な点があった為投稿しました。

引数をラムダ式で記述する際、ラムダ式の最後の中括弧の後にセミコロンが不必要となるのはなぜでしょうか。(伝えたい箇所はソースコードにコメントアウトしています。)

そもそものセミコロンの意味を正しく理解していないから、なのかもしれませんが、どなたかご教授お願いします。

該当のソースコード

Java

1import java.util.*; 2 3public class Main { 4 public static void main(String[] args) throws Exception { 5 List<String> list = new ArrayList<>( 6 Arrays.asList(new String[]{"a","b","c"}) 7 ); 8 list.removeIf( 9 (String s) -> { 10 return s.equals("b"); 11 }//⇦ここに;をつけるとエラーになる 12 ); 13 System.out.println(list); 14 } 15}

仮定

C#には式形式とステータスメントの2種類のラムダがあるようだが、これがJavaにも関係するのか?
それともremoveIfメソッドの、文の終わりを表し、競合してしまうから構文ルールとして記述しないのか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2021/04/06 09:58

> 引数をラムダ式で記述する際、ラムダ式の最後の中括弧の後にセミコロンが不必要となるのはなぜでしょうか。 逆に、なぜ「必要だろう」と考えたのでしょうか?
knhoge

2021/04/06 10:05

コメントありがとうございます。 ラムダ式の構文を下記のように思っていた為、必要だと考えました。 (引数) -> {処理}; と覚えていたのですが、この構文自体が間違っているのでしょうか。 そもそもラムダ式にセミコロンをつける意味を理解しておりませんでした...
guest

回答2

0

ラムダ式の

java

1 (String s) -> { 2 return s.equals("b"); 3 }

の部分で「1つのオブジェクト」となります。
それがremoveIfのメソッドの引数として入っている形になります。
引数の後にセミコロンは入れませんよね?

問題の箇所にセミコロンを入れることは、例えばSystem.out.printlnで

java

1System.out.println(0;); 2 ^この位置

にセミコロンを置くようなものです。

投稿2021/04/06 23:22

swordone

総合スコア20669

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

knhoge

2021/04/07 02:02

swordone様 ご回答ありがとうございます! 具体例も上げていただき、なぜ不必要なのかも理解できました。 これからはラムダ式がどこで何に使われているか把握して、セミコロンの要否を判断したいと思います!
guest

0

ベストアンサー

この構文自体が間違っているのでしょうか。

はい。セミコロンは、ラムダ式の構文の一部ではありません。

ラムダ式が文末に来た場合には、文末としてセミコロンが必要となることはあります。

投稿2021/04/06 10:25

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

knhoge

2021/04/06 10:27

maisumakun様 ありがとうございます! 文の終わりを表す為にセミコロンが付くわけですね。 早期の分かりやすいご回答をいただき、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問