Spec-Zone.ru › Scala 3.1

Объект scala.compiletime.ops.int

Исходный код

объект int

Суперобект
класс Object
трайт Matchable
класс Any
Тип "self"
int.type

Типы

Исходный код
тип %[X <: Int, Y <: Int] <: Int

Остаток от деления X на Y.

package scala.compiletime.ops
trait Snippet0 { self: int.type =>
  val mod: 5 % 2 = 1
}

Исходный код
тип *[X <: Int, Y <: Int] <: Int

Умножение двух Int типов-синглетонов.

package scala.compiletime.ops
trait Snippet0 { self: int.type =>
  val mul: 4 * 2 = 8
}

Исходный код
тип +[X <: Int, Y <: Int] <: Int

Сложение двух Int типов-синглетонов.

package scala.compiletime.ops
trait Snippet0 { self: int.type =>
  val sum: 2 + 2 = 4
}

Исходный код
тип -[X <: Int, Y <: Int] <: Int

Вычитание двух Int типов-синглетонов.

package scala.compiletime.ops
trait Snippet0 { self: int.type =>
  val sub: 4 - 2 = 2
}

Исходный код
тип /[X <: Int, Y <: Int] <: Int

Целочисленное деление двух Int типов-синглетонов.

package scala.compiletime.ops
trait Snippet0 { self: int.type =>
  val div: 5 / 2 = 2
}

Исходный код
тип <[X <: Int, Y <: Int] <: Boolean

Сравнение меньше двух Int типов-синглетонов.

package scala.compiletime.ops
trait Snippet0 { self: int.type =>
  val lt1: 4 < 2 = false
  val lt2: 2 < 4 = true
}

Исходный код
тип <<[X <: Int, Y <: Int] <: Int

Бинарный сдвиг влево X на Y.

package scala.compiletime.ops
trait Snippet0 { self: int.type =>
  val lshift: 1 << 2 = 4
}

Исходный код
тип <=[X <: Int, Y <: Int] <: Boolean

Сравнение меньше или равно двух Int типов-синглетонов.

package scala.compiletime.ops
trait Snippet0 { self: int.type =>
  val lt1: 4 <= 2 = false
  val lt2: 2 <= 2 = true
}

Исходный код
тип >[X <: Int, Y <: Int] <: Boolean

Сравнение больше двух Int типов-синглетонов.

package scala.compiletime.ops
trait Snippet0 { self: int.type =>
  val gt1: 4 > 2 = true
  val gt2: 2 > 2 = false
}

Исходный код
тип >=[X <: Int, Y <: Int] <: Boolean

Сравнение больше или равно двух Int типов-синглетонов.

package scala.compiletime.ops
trait Snippet0 { self: int.type =>
  val ge1: 4 >= 2 = true
  val ge2: 2 >= 3 = false
}

Исходный код
тип >>[X <: Int, Y <: Int] <: Int

Бинарный сдвиг вправо X на Y.

package scala.compiletime.ops
trait Snippet0 { self: int.type =>
  val rshift: 10 >> 1 = 5
}

Исходный код
тип >>>[X <: Int, Y <: Int] <: Int

Бинарный сдвиг вправо X на Y, заполняя слева нулями.

package scala.compiletime.ops
trait Snippet0 { self: int.type =>
  val rshiftzero: 10 >>> 1 = 5
}

Исходный код
тип Abs[X <: Int] <: Int

Модуль числа Int типа-синглетона.

package scala.compiletime.ops
trait Snippet0 { self: int.type =>
  val abs: Abs[-1] = 1
}

Исходный код
тип BitwiseAnd[X <: Int, Y <: Int] <: Int

Битовая операция AND X и Y.

package scala.compiletime.ops
trait Snippet0 { self: int.type =>
  val and1: BitwiseAnd[4, 4] = 4
  val and2: BitwiseAnd[10, 5] = 0
}

Исходный код
тип BitwiseOr[X <: Int, Y <: Int] <: Int

Битовая операция OR X и Y.

package scala.compiletime.ops
trait Snippet0 { self: int.type =>
  val or: BitwiseOr[10, 11] = 11
}

Исходный код
тип Max[X <: Int, Y <: Int] <: Int

Максимум из двух Int типов-синглетонов.

package scala.compiletime.ops
trait Snippet0 { self: int.type =>
  val max: Max[-1, 1] = 1
}

Исходный код
тип Min[X <: Int, Y <: Int] <: Int

Минимум из двух Int типов-синглетонов.

package scala.compiletime.ops
trait Snippet0 { self: int.type =>
  val min: Min[-1, 1] = -1
}

Исходный код
тип Negate[X <: Int] <: Int

Отрицание Int типа-синглетона.

package scala.compiletime.ops
trait Snippet0 { self: int.type =>
  val neg1: Negate[-1] = 1
  val neg2: Negate[1] = -1
}

Исходный код@experimental
тип NumberOfLeadingZeros[X <: Int] <: Int

Количество нулевых битов перед старшим битом в двоичном представлении дополнения до двух для указанного типа-синглетона Int. Возвращает 32, если в двоичном представлении дополнения до двух нет битов 1, то есть если тип-синглетон равен нулю.

package scala.compiletime.ops
trait Snippet0 { self: int.type =>
  val zero_lzc: NumberOfLeadingZeros[0] = 32
  val eight_lzc: NumberOfLeadingZeros[8] = 28
  type Log2[N <: Int] = 31 - NumberOfLeadingZeros[N]
  val log2of8: Log2[8] = 3
}

Исходный код
тип S[N <: Int] <: Int

Последователь натурального числа, где ноль - это тип 0, а последователи уменьшаются так, как если бы определение было:

package scala.compiletime.ops
trait Snippet0 { self: int.type =>
  type S[N <: Int] <: Int = N match {
    case 0 => 1
    case 1 => 2
    case 2 => 3
    // ...
    case 2147483646 => 2147483647
  }
}

Исходный код@experimental
тип ToDouble[X <: Int] <: Double

Преобразование в тип Double Int типа-синглетона.

package scala.compiletime.ops
trait Snippet0 { self: int.type =>
  val x: ToDouble[1] = 1.0
}

Исходный код@experimental
тип ToFloat[X <: Int] <: Float

Преобразование типа Int в тип с плавающей запятой.

package scala.compiletime.ops
trait Snippet0 { self: int.type =>
  val x: ToFloat[1] = 1.0f
}

Исходный код@experimental
тип ToLong[X <: Int] <: Long

Преобразование типа Int в тип Long.

package scala.compiletime.ops
trait Snippet0 { self: int.type =>
  val x: ToLong[1] = 1L
}

Исходный код
тип ToString[X <: Int] <: String

Преобразование типа Int в строку.

package scala.compiletime.ops
trait Snippet0 { self: int.type =>
  val abs: ToString[1] = "1"
}

Исходный код
тип ^[X <: Int, Y <: Int] <: Int

Побитовое исключающее ИЛИ для X и Y.

package scala.compiletime.ops
trait Snippet0 { self: int.type =>
  val xor: 10 ^ 30 = 20
}

© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.1.1/scala/compiletime/ops/int$.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API