Class 我能';kotlin中的t调用方法
我是kotlin的新手,刚刚开始学习类和方法 但是在下面的代码中,我不能调用Class 我能';kotlin中的t调用方法,class,oop,kotlin,methods,Class,Oop,Kotlin,Methods,我是kotlin的新手,刚刚开始学习类和方法 但是在下面的代码中,我不能调用makeReddit()方法: 类站点(地址:String,foundationYear:Int){ 变量地址:字符串=地址 var foundationYear:Int=foundationYear fun makeReddit(地址:String,foundationYear:Int){ this.address=“reddit.com” 本基金年=2005年 } } 主要内容(){ val site:site=ma
makeReddit()
方法:
类站点(地址:String,foundationYear:Int){
变量地址:字符串=地址
var foundationYear:Int=foundationYear
fun makeReddit(地址:String,foundationYear:Int){
this.address=“reddit.com”
本基金年=2005年
}
}
主要内容(){
val site:site=makeReddit()
}
我得到了这个错误:
Kotlin:未解析的引用:makeReddit
这是JetBrains Academy Kotlin课程的一项任务,任务只是说有这样一个类:
类站点(val地址:String,val foundationYear:Int)
实现<代码> MaKeReDITE()/Case>函数,该函数使用ReDDIT.com地址和2005的基金年返回一个<代码>站点<代码>。 (你的评论) 这看起来像是一个针对使用的任务,因为您需要一个方法
makeReddit()
,可以在没有站点实例的情况下使用该方法,如Site.makeReddit()
以下是您如何做到这一点:
类站点(val地址:String,val foundationYear:Int){
变量url:String=地址
风险值:Int=成立年份
//提供一个创建实例的单例
伴生对象工厂{
//在没有网站实例的情况下使用的乐趣
fun makeReddit():站点{
//返回reddit.com的(修复)值
返回网站(“reddit.com”,2005年)
}
}
//提供字符串表示形式
重写funtostring():String{
返回“$url已在$FOUNTED中建立”
}
}
然后,您可以(至少)以两种不同的方式创建站点的实例:
fun main(){
//直接从站点创建reddit站点实例
val reddit=Site.makeReddit()
//通过构造函数创建具有不同值的实例
val random=Site(“ran.dom”,2008年)
//把它们都打印出来
println(“reddit:$reddit”)
println(“随机:$random”)
}
将输出fun main()
reddit:reddit.com成立于2005年
random:ran.dom成立于2008年
在Kotlin中,函数不需要在某些类中声明。在类之外声明的函数称为顶级函数
在此任务中,您可以将makeReddit
声明为站点
类旁边的顶级函数:
class Site(val address: String, val foundationYear: Int) {
// ...
}
fun makeReddit(): Site {
// create and return "reddit" site
}
然后,您可以从其他地方调用它,就像调用makeReddit()
一样,例如从main
函数:
fun main() {
val reddit: Site = makeReddit()
println(reddit.address)
}
您必须首先初始化站点
,并调用类似Site.makeReddit(“reddit.com”,2005)
的方法,但该方法似乎只设置变量,不做任何其他事情,因此您可以只使用数据类站点(地址:String,foundationYear:Int)
并通过构造函数进行初始化:val site=site(“reddit.com”,2005)
。这取决于你在这个网站上做了什么,我强烈建议你学习一些Kotlin教程(甚至可能是java/oop教程)。您可以从这些开始,首先需要掌握kotlin/oop如何工作的概念。否则,你会在StackOverflow上问很多问题,比如为什么你的代码不能编译。这是JetBrains Academy Kotlin课程中的一项任务,该任务只是说有这样一个类:类站点(val地址:String,val foundationYear:Int)
实现makeReddit()函数返回一个带有ReDDIT.com地址和2005的基础年的站点。您的<代码> MaKeDeDITE()/Case>方法目前不返回任何东西…你必须声明它funmakereddit(地址:String,foundationYear:Int):Site{…}
,并在body中真正返回一个Site
。“JetBrains Academy Kotlin课程”对于你现在来说可能太高级了。首先,您需要了解什么是类
,什么是函数
,以及它能做什么。例如,在您的例子中,任务是添加一个函数,该函数应该返回一些内容,但您没有返回任何内容,这可能表明您不熟悉返回概念。