【问题标题】:Trying to use if function in Kotlin class尝试在 Kotlin 类中使用 if 函数
【发布时间】:2021-08-21 15:56:04
【问题描述】:

我不知道为什么它不起作用.. 我不能在类或“playerPosition”函数中使用 if 或 when 函数..

class Player(val name:String, val nachname: String, val nr:Int) {
    var position = mutableListOf<Int>(0,1,2,3)
    var playerPosi = Int


    fun playerPosition(){

      if(playerPosi < 3 ){

      }
    }

}

接下来的问题是,如何在主函数中使用类中的函数? 可能是这样的

class Player(val name:String, val nachname: String, val nr:Int, var playerPosi : Int) {
    var position = mutableListOf<Int>(0,1,2,3)



    fun playerPosition(){

      if(playerPosi > 3 ){
          println("Diese Position gibt es nicht")

      }
    }



   }

主要功能

fun main(){
    val team2 = mutableListOf<Player>()
    team2.add(Player("Berkan", "Kutlu", 10,4))
    val spieler = Player("Wesley","Sneijder",10,4)


    playerPosition()

    println("${team2.first().playerPosi}")



    }

通知 我试图将 playerPosi 的最大 Int 设置为 3。因为进攻、中场、防守和守门员 如果我有从 0 到 3 的数字,我会尝试将 0 识别为 Keeper 1 作为 Defense 等等。

感谢您对我的耐心:D

【问题讨论】:

标签: function class kotlin if-statement


【解决方案1】:

第一个问题

这里的问题不是 if 关键字,而是属性 playerPosi 错误。

而不是写:

var playerPosi = Int

你需要写:

var playerPosi: Int

为什么?

在 kotlin 中,您有两种方式来声明变量/属性:

  • var : 可变变量/属性,你可以改变它的值
  • val : 只读变量(检查 Tenfour04 响应)

在 var / val 关键字之后你给它一个名字

然后你有三个选择:

  • 直接给一个值,kotlin会推断类型
var playerPosi = 1
  • 给它一个类型,然后再初始化它
var playerPosi: Int
  • 给它一个类型并初始化它
var playerPosi: Int = 1

第二个问题

如果你想调用一个对象的方法(这里是Player),你需要:

  • 实例化它
  • 获取参考
  • 从引用中调用方法

所以,如果我们抽取您的样本:

    val team2 = mutableListOf<Player>()
    team2.add(Player("Berkan", "Kutlu", 10,4))
    val spieler = Player("Wesley","Sneijder",10,4) // Instantiate + take the reference on spieler variable.


    speiler.playerPosition() // here you call the playerPosition method with the speiler variable

    println("${team2.first().playerPosi}")

【讨论】:

  • val(对于属性)不一定是不可变的。它是只读的。如果你给它一个自定义的 getter,它可以产生不同的值。另外,playerPosi 是一个属性,而不是一个变量。
【解决方案2】:

尝试将var playerPosi = Int 更改为var playerPosi: Int,使用: 而不是=。如果要定义数据类型,应该使用:= 用于赋值。

要在您之前创建的对象上使用函数,您应该首先指定要调用该函数的对象,然后是一个点,然后是函数的名称。像这样:

fun main(){
    val spieler = Player("Wesley","Sneijder",10,4)
    spieler.playerPosition()
}

【讨论】:

    【解决方案3】:

    在第一种情况下:var playerPosi = Int 是错误的语法。声明应为var playerPosi: Int

    第二种情况:如果playerPlayer类的对象,你可以做player.playerPosi

    main() 函数似乎是为变体 #2 编写的,其中playerPosi 也是构造函数参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多