2017-04-08 14 views
0

関数からブール値を返そうとしています。kotlinの関数から値を返す方法

fun validateDetails(jabberId:String, passwordText: String) { 

      if(jabberId.isEmpty()){ 
       jabber_id.requestFocus() 
       jabber_id.error="Jabber id can't be null." 
       return false 
      }else if(jabberId.isBlank()){ 
      jabber_id.requestFocus() 
      jabber_id.error="Jabber id can't be blank." 
       return false 
      }else if (passwordText.isNotEmpty()){ 
       password.requestFocus(); 
       password.error="Password can't be null." 
       return false 
      } 
      else{ 
       return true 
      } 

    } 

エラー: ブールリテラルは、予想されるタイプのユニットに準拠していません。

私はunitがkotlinのデフォルトの戻り値の型であることを知っています。どのように私はこれをブール値に変更しますか?

+0

中括弧の前に '= 'を削除します。そして、コードを正しくインデントしてください。 –

+0

@JBNizetが削除されました。それでも同じエラー –

+1

関数の戻り値の型を追加してください: ':Boolean'。 –

答えて

3

Kotlinは唯一、あなたの関数は、ボディを持っているので、もし、あなたが言及したglee8eよう

fun functionName(param: Type...): ReturnedType { 
    //function body 
} 

fun validateDetails(jabberId:String, passwordText: String):Boolean { 

      if(jabberId.isEmpty()){ 
       jabber_id.requestFocus() 
       jabber_id.error="Jabber id can't be null." 
       return false 
      }else if(jabberId.isBlank()){ 
      jabber_id.requestFocus() 
      jabber_id.error="Jabber id can't be blank." 
       return false 
      }else if (passwordText.isNotEmpty()){ 
       password.requestFocus(); 
       password.error="Password can't be null." 
       return false 
      } 
      else{ 
       return true 
      } 

    } 

機能paramameters後に返されたタイプを指定する必要があり、これをするときその発現関数の戻り型を推測できます式を使って行うことができます。これはそれがどうやって行われるかです。

fun validateDetails(jabberId:String, passwordText: String) = when { 
    jabberId.isEmpty() -> { 
     jabber_id.requestFocus() 
     jabber_id.error="Jabber id can't be null." 

     false 
    } 

    jabberId.isBlank() -> { 
     jabber_id.requestFocus() 
     jabber_id.error="Jabber id can't be blank." 

     false 
    } 

    passwordText.isNotEmpty() -> { 
     password.requestFocus(); 
     password.error="Password can't be null." 
     false 
    } 

    else -> true 
} 
+0

また、この関数本体を単一の式に変換することもできます。 – glee8e

+0

私の答えをちょうど更新しました。それを指摘していただきありがとうございます。 xD私はまだKotlinの力に慣れているので、その可能性についても考えなかった。 –

+0

あなたはkotlinを使用しているので、あなたはIDEA(JetBrains、Kotlinの後ろのチームによって作成された)、その力はあなたが注意を払うべきものでもあります。ポインターを(あなたのanwserの)メソッド本体の中にセットすると、それをエクスプレッション本体に変更するように指示されます。 – glee8e

関連する問題