使用Kotlin中的方法为变量赋值?

时间:2017-11-26 16:17:11

标签: java kotlin

在Java中,我可以使用[class-name]。[method]来改变类中的变量值:

 public class Main {    
    public static void main(String[] args) {
        // Prints "Hello, World" to the terminal window.
        test.teste();
        test.printlnvar();
    }        
}

class test{
    public static int a = 0;
    public static int b = 0;
    public static void teste(){
        a = 9;
        b = 12;
    }
    public static void printlnvar(){
        System.out.println("the value of A: " + a);
        System.out.println("the value of B: " + b);
    }
}

但是,我怎么能在Kotlin那样做呢?我尝试但是在下面的代码中,变量IntColumn和IntRow的结果总是为0:

public class drawTriangle{       
   public var IntColumn:Int = 0;
   public var IntRow:Int = 0;

  fun drawTriangle(){
    this.inputRowandColumn();
    this.Printvalue();
  }

  fun inputRowandColumn(){
    IntColumn = 12;
    IntRow = 3;
  }

  fun Printvalue(){
    println("the value of rows is: ${IntRow}");
    println("the value of column is: ${IntColumn}");
  }
}

fun main(args: Array<String>){
    drawTriangle().inputRowandColumn();
    drawTriangle().Printvalue();
}

2 个答案:

答案 0 :(得分:2)

main函数中,您创建了drawTriangle类的2个独立实例,因此有2组变量 - 其中一组是您更改的,其中一组是您打印的。一个简短的修复:

fun main(args: Array<String>){
    val d = drawTriangle()
    d.inputRowandColumn()
    d.Printvalue()
}

P.S。您的Kotlin代码与Java代码截然不同。在您的Java代码段中,您使用属于某个类的2个static字段。但是在Kotlin片段中,您使用了2个成员属性,这些属性需要存储实例。

P.P.S。你的Kotlin代码有点像C#。在学习新语言时,使用该语言的命名约定并不是一个坏主意;)

答案 1 :(得分:0)

我不确定你为什么要做你正在做的事情。根据voddan,您的代码不相同。 Java正在使用与类相关联的静态,而不是实例,因此您可以直接从静态“main”方法访问它们。

Kotlin将类(静态)项与实例项分开。如果定义了一个类,则只能实例化实例并使用它们。

如果你真的想在Kotlin中实现你的尝试,你需要使用'对象'而不是'类'。 Kotlin中的一个物体是一个单身人士。这是你如何在Kotlin写的。

object drawTriangle {
    var intColumn: Int = 0
    var intRow: Int = 0

    fun drawTriangle() {
        this.inputRowandColumn()
        this.printvalue()
    }

    fun inputRowandColumn() {
        intColumn = 12
        intRow = 3
    }

    fun printvalue() {
        println("the value of Rows is: $intRow")
        println("the value of Column is: $intColumn")
    }
}

fun main(args: Array<String>) {
    drawTriangle.inputRowandColumn()
    drawTriangle.printvalue()
}

请注意,我删除了'public',因为Kotlin的默认设置是公开的。删除了分号,并将其重命名为符合Kotlin命名标准。