Greetings
I have a question about the following piece of code, from the Udacity course on Kotlin.
****The code starts here
package Aquarium
class Fish(val friendly: Boolean = true, VolumeNeeded: Int){
val size: Int
init{
if (friendly){
size = VolumeNeeded
}
else{
size = VolumeNeeded * 2
}
}
}
fun fishExample(){
val fish = Fish(friendly = true, VolumeNeeded = 20)
println("Is Fish friendly? ${fish.friendly}, how much volume it needs: ${fish.size} cm" )
}
*****Code ends here
My question is, when the parameter {fish.VolumeNeeded} was passed into the last println statement, it gave an error which was explained as “VolumeNeeded” not being a property of the class. However when {fish.friendly} is passed, it is allowed but it also isnt a property of the class. Why did {VolumeNeeded} produce an error?
Thank you
In the class line, if you add val
before VolumeNeeded
, it would work. That makes it a property, and since it’s not a property, the value can only be used while the class is being constructed (and not afterward in a function).
I not so sure the udacity course you follow is the best. You say it claims that friendly
isn’t a property of Fish
which is wrong.
Also you use VolumeNeeded
instead of volumeNeeded
. This is not necessarialy worng, but the kotlin coding conventions clearly state that all properties and variables should be in cammel case and start with a lower letter. Only classes and interfaces should start with an upper case letter.
This shows that the author either doesn’t know much kotlin or at least never used it outside of personal projects. So if you didn’t pay for the course I consider switching to another course about kotlin.
https://kotlinlang.org/docs/tutorials/ is a great place to start.
I took the same Udacity course (Kotlin Bootcamp for Programmers). The senior instructor was very knowledgeable about Kotlin and its coding conventions.
In my copy of that code, the second ctor parameter is properly spelled as volumeNeeded. And I doubt if it was stated in the course that friendly is not a property.
1 Like