Size: a a a

Scala User Group

2021 July 13

S

Simon in Scala User Group
имплисит класс - Square$RichInt, класс объекта-компаньона - Square$RichInt$. Экземпляр объекта компаньона - public static Square$RichInt$ MODULE$.
источник

AP

Alexey Polovinkin in Scala User Group
Может я байткод неправильно читаю?
Сейчас изменил метод чтобы увидеть где он находится и я так понимаю он здесь отображается внутри public final int hashCode$extension(int);
https://godbolt.org/z/f5z749fdc
источник

S

Simon in Scala User Group
причем здесь hashCode?
источник

AP

Alexey Polovinkin in Scala User Group
потому что под этой функцией описан явно байткод моего метода
источник

S

Simon in Scala User Group
видимо коряво отображает
источник

S

Simon in Scala User Group
не проще через javap?
источник

S

Simon in Scala User Group
javap -p -c target/scala-2.13/classes/Square\$RichInt\$.class
  public final void weirdMethod$extension(int, int);
   Code:
      0: getstatic     #29                 // Field scala/Predef$.MODULE$:Lscala/Predef$;
      3: iload_1
      4: iload_2
      5: iadd
      6: bipush        8
      8: isub
      9: invokestatic  #35                 // Method scala/runtime/BoxesRunTime.boxToInteger:(I)Ljava/lang/Integer;
     12: invokevirtual #39                 // Method scala/Predef$.println:(Ljava/lang/Object;)V
     15: return
источник

AP

Alexey Polovinkin in Scala User Group
да я просто затестил сервис который в @scala_channel_ru скинули, если бы всё работало правильно, то через браузер бы быстрее получилось посмотреть байткод
источник

S

Simon in Scala User Group
зачем онлайн тулы-то?
источник

AP

Alexey Polovinkin in Scala User Group
хайпово
источник

AP

Alexey Polovinkin in Scala User Group
вообще это ведь файлик надо создать, скомпилить, путь прописать
источник

AP

Alexey Polovinkin in Scala User Group
через онлайн тулу быстрее
источник

S

Simon in Scala User Group
Обмажутся своими онлайн-тулами и IDE, а потом магия всякая происходит. Если что-то можно сделать из интуитивно-понятного интерфейса командной строки - это надо делать из интуитивно-понятного интерфейса командной строки.
источник

S

Simon in Scala User Group
 $ cat <<EOF > build.sbt 
scalaVersion := "2.13.5"
EOF                                                            
$ cat <<EOF > test.scala
object Square {
   implicit class RichInt(private val i: Int) extends AnyVal {
       def weirdMethod(x: Int) = println(i + x - 8)
   }

   10.weirdMethod(5)
}
EOF
$ sbt compile          
$ javap -p -c target/scala-2.13/classes/Square\$RichInt\$.class

Куда уж быстрее?
источник

v

vaan in Scala User Group
В виме писать как Спивак? 🤔
источник

GP

Grigory Pomadchin in Scala User Group
скала версия не та
источник

S

Simon in Scala User Group
Зачем вам vim, если для задачи хватает cat?
источник

GP

Grigory Pomadchin in Scala User Group
похоже и правда баг какой-то у компалейркхплорера со старой скалой
источник

AP

Alexey Polovinkin in Scala User Group
а, с новой правда всё работает, ну отлично, буду дальше обмазываться онлайн тулами
источник

v

vaan in Scala User Group
Справедливо
источник