Каков его эквивалент в Kotlin для & amp; +, как в Swift

Если все, что вы хотите сделать, это запустить ваш скрипт Python на компьютере с Windows, на котором установлен Python Interpreter, преобразование расширения вашего сохраненного скрипта с '.py' на '.pyw' должно сделать трюк.

Но если вы используете py2exe для преобразования вашего сценария в автономное приложение, которое будет запускаться на любой машине Windows, вам нужно внести следующие изменения в ваш файл setup.py.

Следующий пример представляет собой простой python-GUI, созданный с использованием Tkinter:

from distutils.core import setup
import py2exe
setup (console = ['tkinter_example.pyw'],
       options = { 'py2exe' : {'packages':['Tkinter']}})

Измените «консоль» в приведенном выше коде на «windows» ..

from distutils.core import setup
import py2exe
setup (windows = ['tkinter_example.pyw'],
       options = { 'py2exe' : {'packages':['Tkinter']}})

Это откроет только созданный графический интерфейс Tkinter и отсутствие окна консоли.

0
задан rmaddy 13 July 2018 в 22:23
поделиться

3 ответа

Kotlin не вызывает ошибок в случае переполнения целых чисел. Kotlin основан на JVM, поэтому он также не имеет неподписанных типов. Таким образом, вы можете просто добавить значения:

val hash : Int = ...
val bytes : ByteArray = ...
hash += bytes[i]

Конечно, Byte также подписан в Kotlin, поэтому вам может потребоваться преобразование значений при его расширении:

val byte : Byte = bytes[i]
val byteAsInt : Int = byte.toInt()
if (byteAsInt < 0) byteAsInt = 255 + byteAsInt + 1

hash += byteAsInt
2
ответ дан Dai 17 August 2018 в 12:07
поделиться

Подобного оператора нет, но Котлин может сделать то же самое:

val a: Byte = 100
val b: Byte = 121
val x: Byte = (((a + b) shl 8) shr 8).toByte()
println(x)

, поэтому оператор может быть создан:

infix fun Byte.`&+`(b: Byte): Byte = (((this + b) shl 8) shr 8).toByte()

и используется следующим образом:

val a: Byte = 100
val b: Byte = 121
val x: Byte = a `&+` b
println(x)
1
ответ дан mTak 17 August 2018 в 12:07
поделиться

Я планирую использовать этот java-код из моего файла kotlin:

public static byte addBytesWithOverflow(byte a, byte b) {
    int val = (a + b) & 0xFF;
    return (byte) val;
}
0
ответ дан tinker 17 August 2018 в 12:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: