簡體   English   中英

如何在Kotlin中的函數中返回變量

[英]How to return a variable in a function in kotlin

我創建了一個接收輸入並將其與列表進行比較的函數,當找到匹配項時它返回匹配項,在這種情況下,此匹配項是我創建的類的屬性。

我知道問題出在return語句上,因此在函數的開頭,我將return聲明為“ Any”,這遠不止於此。

錯誤是這樣的:具有塊體('{...}')的函數中需要'return'表達式

   class Class1(var self: String)       
   var test_class = Class1("")       

   fun giver(){       
       test_class.self = "Anything"       
   }

   class Funciones(){       
           fun match_finder(texto: String): Any{       
               var lista = listOf<String>(test_class.self)       
               var lista_de_listas = listOf<String>("test_class.self")       
               var count = -1       
               for (i in lista_de_listas){       
                   count = count + 1       
                   if (texto == i){       
                       lista_de_listas = lista       
                       var variable = lista_de_listas[count]       
                       return variable        

                   }       


               }       

           }       
       }           


   fun main(){       
       giver()       
       var x = "test_class.self"       
       var funcion = Funciones()       
       var y = funcion.match_finder(x)       
       println(y)       

   }

我在網上搜索,如果有人遇到相同的問題,則正確的代碼如下:

   class Funciones(){       
       fun match_finder(texto: String): Any{       
           var lista = listOf<String>(test_class.self)       
           var lista_de_listas = listOf<String>("test_class.self")       
           var count = -1
           var variable = " "
           for (i in lista_de_listas){       
               count = count + 1       
               if (texto == i){       
                   lista_de_listas = lista       
                   var variable = lista_de_listas[count]       
                   return variable        

               } else {
                   return "There is no match"
                  }      


           }  
        return variable     
       }       
   }   

為了說明問題所在,讓我們考慮以下代碼:

class MyClass {
    fun doSomething(): String {
        val numbers = listOf(1, 2, 3)
        for (number in numbers) {
            if (number % 2 == 0) {
                return "There is at least one even number in the list"
            }
        }
    }
}

如果嘗試對其進行編譯,則會收到與您的問題相同的錯誤消息: A 'return' expression required in a function with a block body ('{...}') 這是為什么?

好吧,我們定義了一個函數doSomething返回一個String(它可以是任何其他類型),但是僅當數字列表包含至少一個偶數時,我們才返回結果。 如果沒有偶數,應該返回什么? 編譯器不知道(怎么知道?),因此它提示我們該消息。 我們可以通過返回值或引發異常來修復代碼:

class MyClass {
    fun doSomething(): String {
        val numbers = listOf(1, 2, 3)
        for (number in numbers) {
            if (number % 2 == 0) {
                return "There is at least one even number in the list"
            }
        }

        // return something if the list doesn't contain any even number
        return "There is no even number in the list"
    }
}

相同的邏輯適用於您的原始代碼:如果沒有i這樣的texto == i ,則函數應返回什么?

另請注意,您提出的解決方案在語法上可能是正確的-意味着它可以正確編譯-但可能會執行某些意外操作。 for循環是無用的,因為if/else語句將始終使函數在第一次迭代期間返回,因此即使列表中的后面確實存在"There is no match"也可能返回值"There is no match"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM