提问人:coilic3 提问时间:9/7/2023 更新时间:9/8/2023 访问量:39
如何在函数中引用带有参数的参数?
how to reference arguments with parameters in a function?
问:
class Score(
val score:Int
){
fun PersonalScore(){
println(score)
}
}
fun comPare(a: Int, b: Int, c: Int): Int{
var max = a
if(max < b) max = b
if(max < c) max = c
println("The best score is $max")
return max
}
fun main() {
val score1 = Score(10)
val score2 = Score(4)
val score3 = Score(7)
comPare(score1, score2, score3) //this line is error
P/s:我是初学者,我不知道如何解决它。请给我一些指导,我将非常感谢您的帮助。非常感谢你们!!
可以更深入地理解,越来越多的实践
答:
-1赞
Ehsan Ullah
9/7/2023
#1
您应该在 Score 类中创建 getter 和 setter。
class Score(){
val classLevelScore:Int = 0
fun PersonalScore(){
println(classLevelScore)
}
fun setScore(score:Int){
classLevelScore = score
}
fun getScore():Int{
return classLevelScore
}
}
fun comPare(a: Int, b: Int, c: Int): Int{
var max = a
if(max < b) max = b
if(max < c) max = c
println("The best score is $max")
return max
}
fun main() {
val score1 = Score()
score1.setScore(10)
val score2 = Score(4)
score2.setScore(4)
val score3 = Score(7)
score3.setScore(7)
comPare(score1.getScore(), score2.getScore(), score3.getScore())
}
所以这里我们有班级水平的分数。我们通过一种方法设置分数,并通过一种方法获得该分数
评论
2赞
Tenfour04
9/7/2023
这是 Kotlin 中的主要反模式,因为 Kotlin 使用的是属性,而不是 getter/setter 函数。该分数已可从您的财产访问。classLevelScore
0赞
Manuel Mato
9/7/2023
#2
请尝试以下方法:
data class Score(val value: Int) {
fun personalScore() {
println(value)
}
}
fun compareScores(score1: Score, score2: Score, score3: Score): Score {
var maxScore = score1
if (score2.value > maxScore.value) {
maxScore = score2
}
if (score3.value > maxScore.value) {
maxScore = score3
}
println("The best score is ${maxScore.value}")
return maxScore
}
val score1 = Score(10)
val score2 = Score(4)
val score3 = Score(7)
val bestScore = compareScores(score1, score2, score3)
bestScore.personalScore()
结果是The best score is 10
2赞
Tenfour04
9/7/2023
#3
您定义了要获取参数的函数。您的 Score 类不是 .这是一个 .它内部有一个属性,即 .你必须非常精确。如果参数定义为 ,则必须向它传递一个 ,而不是 。comPare
Int
Int
Score
Int
Int
Int
Score
因此,有两种不同的(相互排斥的)解决方案。
- 将参数传递给函数时,将参数从 Score 实例中提取出来。
Int
comPare
- 将函数更改为采用参数而不是参数,并从此函数内的 Score 实例中读取值。
comPare
Score
Int
1:
fun main() {
val score1 = Score(10)
val score2 = Score(4)
val score3 = Score(7)
comPare(score1.score, score2.score, score3.score)
}
2:
fun comPare(a: Score, b: Score, c: Score): Int{
var max = a.score
if(max < b.score) max = b.score
if(max < c.score) max = c.score
println("The best score is $max")
return max.score
}
评论
1赞
Tenfour04
9/7/2023
旁注:按照惯例,函数名称应以小写字母开头。这有助于将它们与构造函数区分开来。因此,您的函数应该被命名。但实际上,一个函数应该总是以动词开头命名,这样它就可以描述它的作用,所以它实际上应该被命名为 。而“比较”是一个词,所以你的函数应该命名为 .PersonalScore
personalScore
printScore
comPare
compare
0赞
coilic3
9/11/2023
谢谢先生,这对我真的很有帮助。
评论