LINUX.ORG.RU

История изменений

Исправление note173, (текущая версия) :

Нет, в этом случае разумнее посмотреть сгенерированный байткод, это легко делается встроенными в java средствами.

var n = 1;
var f: Float = n.asInstanceOf[Float];
var s = n + f;
   0:	iconst_1
   1:	istore_2
   2:	iload_2
   3:	i2f
   4:	fstore_3
   5:	iload_2
   6:	i2f
   7:	fload_3
   8:	fadd
   9:	fstore	4
   11:	iload_2
   12:	istore	6
val r = n match {
    case 1 => 2
    case 2 => 4
    case x => x * 2
}
   14:	iload	6
   16:	tableswitch{ //1 to 2
		1: 51;
		2: 47;
		default: 40 }
   40:	iload	6
   42:	iconst_2
   43:	imul
   44:	goto	52
   47:	iconst_4
   48:	goto	52
   51:	iconst_2
   52:	istore	5

(Для не знающих jvm ассемблер, сгенерированный код полностью совпадает с аналогичным на java (в начале (float)n, в конце switch))

Исходная версия note173, :

Нет, в этом случае разумнее посмотреть сгенерированный байткод, это легко делается встроенными в java средствами.

var n = 1;
var f: Float = n.asInstanceOf[Float];
var s = n + f;
   0:	iconst_1
   1:	istore_2
   2:	iload_2
   3:	i2f
   4:	fstore_3
   5:	iload_2
   6:	i2f
   7:	fload_3
   8:	fadd
   9:	fstore	4
   11:	iload_2
   12:	istore	6
val r = n match {
    case 1 => 2
    case 2 => 4
    case x => x * 2
}
   14:	iload	6
   16:	tableswitch{ //1 to 2
		1: 51;
		2: 47;
		default: 40 }
   40:	iload	6
   42:	iconst_2
   43:	imul
   44:	goto	52
   47:	iconst_4
   48:	goto	52
   51:	iconst_2
   52:	istore	5