Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Class 我能';kotlin中的t调用方法_Class_Oop_Kotlin_Methods - Fatal编程技术网

Class 我能';kotlin中的t调用方法

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

我是kotlin的新手,刚刚开始学习类和方法 但是在下面的代码中,我不能调用
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课程”对于你现在来说可能太高级了。首先,您需要了解什么是
,什么是
函数
,以及它能做什么。例如,在您的例子中,任务是添加一个函数,该函数应该返回一些内容,但您没有返回任何内容,这可能表明您不熟悉返回概念。