我正在从官方文档学习Kotlin
,我正在尝试创建一个类来进行算术运算。
class Sum {
var a: Int, b: Int;
constructor(a: Int, b: Int) {
this.a = a
this.b = b
}
fun add(): Int {
return a + b
}
}
我有这个类,现在我想创建这个类的对象,如
val sum = Sum(1,2)
Log.d("Sum", sum.add())
我在Sum
课程中收到此错误:
行预期属性getter或setter
b: int;
中的var a: Int, b: Int;
上的
答案 0 :(得分:7)
var a: Int, b: Int;
Kotlin不允许在一行中有多个声明。你必须去:
var a: Int
var b: Int
代替。 Kotlin人员简单地发现“int a,b,..”的C / java实践是他们希望在Kotlin中不支持的东西。
答案 1 :(得分:5)
只需在两行中声明变量即可解决您的错误:
var a: Int
var b: Int
但是,建议的方法是将这些变量集成到构造函数中(如果您只想要一个带参数的构造函数):
class Sum(var a: Int, var b: Int) {
fun add(): Int = a + b
}
答案 2 :(得分:3)
您正在课堂上编写不必要的代码。
如果只有一个,请填写constructor
的简短表格。
如果课程中有属性,可以使用constructor
或val
在var
中定义属性。
使用如下:
class Sum (var a: Int,var b: Int){
fun add(): Int {
return a + b
}
}
请阅读Kotlin
的{{3}}。
答案 3 :(得分:1)
以下代码显示了如何在类中分配和操作变量
class Sum (var a: Int,var b: Int){
fun add(): Int= a + b //you can return the results directly.
}
您可以使用下面的主要内容测试您的代码。
fun main(args: Array<String>) {
var s= Sum(1,2)
print(s.add())
}
答案 4 :(得分:1)
首先,您必须将属性声明放在单独的行上。你可以在这里参考this thread,其中JetBrains的工程师yole说:
许多Java样式指南都不赞成在同一行声明多个属性,因此我们没有在Kotlin中实现对该属性的支持。
一旦完成了单独行上的属性声明,你应该没有问题,因为kotlin genrates默认的getter和setter内部具有与你的属性相同的可见性。如果您未指定任何可见性修饰符,则默认使用public,这意味着您的声明随处可见。
事实上,Kotlin有一个简洁的语法,用于声明属性并从主构造函数初始化它们(如果你只有一个构造函数,它总是主要的):
class Sum(var a:Int,var b:Int) {
fun add(): Int {
return a + b
}
}
下方链接的官方文档中的构造函数列