Groovy Truthyの質問:String.split()は空の配列を生成しますが、「true」ですか?どうやって?

クリスチャンボンジョルノ

以下は、grooyshシェルで実行した一連の手順で問題を示しています

String.split()=> String[]JavaSDKで期待どおり。:私は、継続的な表現の一部としてこれを評価するとchangedDirs.split('\r\n').collect{ ... }、私のcollect実行は空で1時間it許可させてください。このコードはJenkinsサーバーで実行されており、Jenkinsは、たとえば、グルーヴィーな方言を実行していることが知られています。:私はgroovyshでローカルにそれをテストする場合でも、かかわらず、私は確かに私は期待していなかった何かを得る[]に評価しtruthy た場合、それはから来ているのString.split()

だから:誰かが説明できますか:

  1. このグルーヴィーなコードは以下の生成方法truthyのためString.split()ではなく、基本的な空のために[]
  2. ジェンキンスは何か変なことをしていますか?
groovy:000> [] ? 'true' : 'false'
===> false
groovy:000> changedDirs = ''
===> 
groovy:000> changedDirs.split('\r\n')
===> []
groovy:000> changedDirs.split('\r\n') ? true : false
===> true
groovy:000> result = changedDirs.split('\r\n')
===> []
groovy:000> result ? true : false
===> true
groovy:000> result.class
===> class [Ljava.lang.String;
groovy:000> [] as String[] ? true : false
===> false
groovy:000> 
Szymon Stepniak

result評価trueするブールとして、ためにchangedDirs.split('\r\n')生成するString[]空の文字列-単一の要素を持つ配列を。次の例を見てください。

groovy:000> ([] as String[]).class
===> class [Ljava.lang.String;
groovy:000> ([] as String[]) ? true : false
===> false
groovy:000> x = ([] as String[])
===> []
groovy:000> x.dump()
===> <[Ljava.lang.String;@5c41d037>
groovy:000> y = "".split(",")
===> []
groovy:000> y.class
===> class [Ljava.lang.String;
groovy:000> y.dump()
===> <[Ljava.lang.String;@79a1728c>
groovy:000> y ? true : false
===> true
groovy:000> y.length
===> 1
groovy:000> x.length
===> 0
groovy:000> y[0].dump()
===> <java.lang.String@0 value= hash=0>
groovy:000> 

「GroovyTruth」では、配列内の要素の値に関係なく、空でない配列はすべて、メソッドをtrue呼び出すときに評価されasBoolean()ます。

次のJavaコード例を見るとString.split(pattern)、空の文字列の場合にメソッドが単一の要素配列を生成することがわかります。

final class Test {

    public static void main(String[] args) {
        String[] array = "".split("\r\n");

        System.out.println(array.length); // prints: 1
    }
}

このSOの質問は役立つかもしれません-空の文字列の「分割」が空でない配列を返すのはなぜですか?

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Groovy Truthy question: String.split() produces empty array, but is 'true' ? How?

分類Dev

groovyを使用して特定の文字列が含まれている場合にのみ行を印刷するにはどうすればよいですか?

分類Dev

Groovyでsplitを呼び出す前に単一要素の配列文字列を処理するにはどうすればよいですか?

分類Dev

JSONから特定の配列ノードを取得し、groovyを使用して1つずつ印刷するにはどうすればよいですか?

分類Dev

正規表現を使用してGroovyの文字列を除外するにはどうすればよいですか?

分類Dev

@Immutableはgroovyでどのように機能しますか?

分類Dev

アリはGroovyでどのように使用しますか

分類Dev

Groovy:空の文字列をスペースでsplit()すると、1つの空の文字列のリストが返されるのはなぜですか?

分類Dev

GroovyのGroupBy

分類Dev

配列をGroovyのそれぞれの要素に分割するにはどうすればよいですか?

分類Dev

Java / Groovyはどのように私は正しく2つの文字列値を比較するのですか?.equals()に動作していません

分類Dev

配列構造の単一の値をGroovyに取り込むにはどうすればよいですか?

分類Dev

Groovy HttpBuilderjson入力の問題

分類Dev

GroovyまたはJavaでJSONの文字列を準備するにはどうすればよいですか?

分類Dev

このGroovy式の何が問題になっていますか?

分類Dev

このコードの何が問題になっていますか?(groovy)MissingPropertyException

分類Dev

Groovyはすべての方法で短絡しますか?

分類Dev

groovyでマップ内の配列にアクセスするにはどうすればよいですか?

分類Dev

Groovyを使用してmongoにdouble型の値を挿入するにはどうすればよいですか?

分類Dev

Jenkinsfile takeWhileはJenkinsでブール値を返しますが、実際のgroovyではArrayListを返します。どうして?

分類Dev

Groovyの「def」とは

分類Dev

Groovy String.replaceを取得して、数字が不明な部分文字列を削除するにはどうすればよいですか?

分類Dev

groovyの引数として0を許可するにはどうすればよいですか?

分類Dev

Java / GroovyでAzureAPI(Api Management)のSASトークンを生成するにはどうすればよいですか?

分類Dev

Groovyを使用してArrayListにもう1つの文字列を追加するにはどうすればよいですか?

分類Dev

groovyはどのようにしてJavaクラスに新しいメソッドを追加しますか?

分類Dev

Groovyで中括弧の構文はどういう意味ですか?

分類Dev

Groovy、Scalaは私の人生を楽にしてくれますか?

分類Dev

Groovy Genericsの失敗

Related 関連記事

  1. 1

    Groovy Truthy question: String.split() produces empty array, but is 'true' ? How?

  2. 2

    groovyを使用して特定の文字列が含まれている場合にのみ行を印刷するにはどうすればよいですか?

  3. 3

    Groovyでsplitを呼び出す前に単一要素の配列文字列を処理するにはどうすればよいですか?

  4. 4

    JSONから特定の配列ノードを取得し、groovyを使用して1つずつ印刷するにはどうすればよいですか?

  5. 5

    正規表現を使用してGroovyの文字列を除外するにはどうすればよいですか?

  6. 6

    @Immutableはgroovyでどのように機能しますか?

  7. 7

    アリはGroovyでどのように使用しますか

  8. 8

    Groovy:空の文字列をスペースでsplit()すると、1つの空の文字列のリストが返されるのはなぜですか?

  9. 9

    GroovyのGroupBy

  10. 10

    配列をGroovyのそれぞれの要素に分割するにはどうすればよいですか?

  11. 11

    Java / Groovyはどのように私は正しく2つの文字列値を比較するのですか?.equals()に動作していません

  12. 12

    配列構造の単一の値をGroovyに取り込むにはどうすればよいですか?

  13. 13

    Groovy HttpBuilderjson入力の問題

  14. 14

    GroovyまたはJavaでJSONの文字列を準備するにはどうすればよいですか?

  15. 15

    このGroovy式の何が問題になっていますか?

  16. 16

    このコードの何が問題になっていますか?(groovy)MissingPropertyException

  17. 17

    Groovyはすべての方法で短絡しますか?

  18. 18

    groovyでマップ内の配列にアクセスするにはどうすればよいですか?

  19. 19

    Groovyを使用してmongoにdouble型の値を挿入するにはどうすればよいですか?

  20. 20

    Jenkinsfile takeWhileはJenkinsでブール値を返しますが、実際のgroovyではArrayListを返します。どうして?

  21. 21

    Groovyの「def」とは

  22. 22

    Groovy String.replaceを取得して、数字が不明な部分文字列を削除するにはどうすればよいですか?

  23. 23

    groovyの引数として0を許可するにはどうすればよいですか?

  24. 24

    Java / GroovyでAzureAPI(Api Management)のSASトークンを生成するにはどうすればよいですか?

  25. 25

    Groovyを使用してArrayListにもう1つの文字列を追加するにはどうすればよいですか?

  26. 26

    groovyはどのようにしてJavaクラスに新しいメソッドを追加しますか?

  27. 27

    Groovyで中括弧の構文はどういう意味ですか?

  28. 28

    Groovy、Scalaは私の人生を楽にしてくれますか?

  29. 29

    Groovy Genericsの失敗

ホットタグ

アーカイブ