簡體   English   中英

如何在 Kotlin 中的一行中進行多個變量賦值,例如 C,C++?

[英]How to do multiple variable assignments in one line in Kotlin like C,C++?

我不得不使用除 x 和 y 之外的其他變量在一個行表達式中交換 2 個數字。 所以我寫了下面的.c程序來交換兩個給定條件的數字,它就像魅力一樣。


int main() {
    
    int x =5, y =2;
    x = y-x+(y=x);
    printf("X=%d, y=%d", x, y);

    return 0;
}

但是當我嘗試在 kotlin 中做同樣的事情時,它給了我一個錯誤

賦值不是表達式,在這種情況下只允許使用表達式,

我可以通過像這樣引入第三個變量來解決這個問題。 但是除了已經給出的 x 和 y 之外,我不允許有任何其他變量。 那么有沒有其他方法可以使用任何 kotlin 屬性在一行中做到這一點?

下面是kotlin程序

fun main() {
    
    var x = 5
    var y = 10
    x = y-x+(y=x)   
    println("X = $x, Y = $y")

}

雖然我在下面有兩個建議,但我想從針對其中任何一個的建議開始,至少在這個簡單的示例中是這樣。

優化代碼以供開發人員閱讀通常會更加清晰,可以通過以下方式閱讀:

  • 創建一個具有描述性名稱的額外變量
  • 更喜歡val而不是var以避免意外突變
  • 並嘗試使代碼“線性”,因此可以從上到下讀取操作而無需在函數之間跳轉
  • 避免需要 IDE 來查看類型提示的代碼

而且我相信編譯器會讓代碼變得高效。

fun main() {
  val x = 5
  val y = 10

  val newX = y
  val newY = x

  println("X = $newX, Y = $newY")
}

本地 function

您可以使用本地 function來執行交換,因為 function 仍然能夠訪問原始值。

fun main() {
  var x = 5
  var y = 10

  fun swap(originalX: Int, originalY: Int) {
    y = originalX
    x = originalY
  }

  swap(x, y)

  println("X = $x, Y = $y")
}

Scope function

這可以用代碼打成一行

fun main() {
  var x = 5
  var y = 10

  (x to y).apply  { x = second; y = first }

  println("X = $x, Y = $y")
}

一條線? 是的。 更難閱讀? 我認同。

暫無
暫無

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

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