ImageIO

Версия Minecraft
0.1+
1,111
47
420
Крч есть у меня такой вот код:
Scala:
override def bindTexture(resource: Resource): Unit = {
    if (!resource.isTexture) throw new RuntimeException(s"$resource is not a texture")
    textures.get(resource) match {
      case Some(texture) =>
        texture.bindAsTexture()
      case None =>
        getInput(resource) match {
          case Some(input) =>
            val image = ImageIO.read(input)
            val unit = image.toGLTexture
            textures.put(resource, unit)
            unit.bindAsTexture()
          case None =>
            bindTexture(emo)
        }

    }
  }
Да, да тригеритесь на скалу. Суть в том что он должен был бы загрузить картинку из потока, но он тупа даже не входит в метод read (ImageIO.read(input)). Вопрос собсвенна пачему?
 

CumingSoon

Местный стендапер
1,634
12
269
В теме, которой просят помочь найти ошибку в загрузке картинки, устроили 2 срача: про эксепшоны и отсутствие скобок.
15167149910380.jpg
 
1,111
47
420
Но без этого я бы не смог сделать такой вот сеттер:
Scala:
def model_=(value: OreModel): Unit = {
    _model = value
    setMeta()
    if (worldObj != null) {
      markDirty()
      worldObj.markBlockForUpdate(xCoord, yCoord, zCoord)
    }
  }
И вот так вот бы его юзать:
Scala:
tile.model = model
Или вот такой геттер
Scala:
  def window: Long = _window
Я уж молчу про такие методы:
Scala:
def drawBlock(`type`: Int)(block: => Unit): Unit = {
    glPushMatrix()
    startDrawing(`type`)
    block
    draw()
    glPopMatrix()
  }
 
1,111
47
420
В теме, которой просят помочь найти ошибку в загрузке картинки, устроили 2 срача: про эксепшоны и отсутствие скобок.
15167149910380.jpg
Там кстати поток виснет в нативном методе загрузки нативной ж библиотеки.
 

CumingSoon

Местный стендапер
1,634
12
269
Не, ну вызывать функции, словно это переменные - круто. Только не всегда это читаемо. И выходит, что глумливый фолкен не может отличить неявную переменную и неявную функцию. Ай-ай-ай
 
1,111
47
420
Не, ну вызывать функции, словно это переменные - круто. Только не всегда это читаемо. И выходит, что глумливый фолкен не может отличить неявную переменную и неявную функцию. Ай-ай-ай
Ну ради такой фигни я не буду скобки ставит. Пусть катится колбаской.
 
808
3
124
Я всего лишь окотлинился, у нас в котлинах вместо этих ваших имплиситов можно сделать "extension property" и "extension function":

Kotlin:
// юзается без (), фу и мерзость
val BufferedImage.toGlTexture: Int
    get() = doExpensiveGlShit(this)

// юзается с (), ляпота
fun BufferedImage.toGlTexture() = doExpensiveGlShit(this)
 

CumingSoon

Местный стендапер
1,634
12
269
Ну ради такой фигни я не буду скобки ставит. Пусть катится колбаской.
А потом будешь Stream из чисел, чтобы заменить цикл. Да, это классно, можно ещё рекурсию использовать вместо цикла, как делается в Хаскелле. Классно тебе, а не компьютеру. Он, всё-таки, не может такое оптимизировать и т-т-т-о-о-ормо-з---ит
 

CumingSoon

Местный стендапер
1,634
12
269
Я всего лишь окотлинился, у нас в котлинах вместо этих ваших имплиситов можно сделать "extension property" и "extension function":

Kotlin:
// юзается без (), фу и мерзость
val BufferedImage.toGlTexture: Int
    get() = doExpensiveGlShit(this)

// юзается с (), ляпота
fun BufferedImage.toGlTexture() = doExpensiveGlShit(this)
Поэтому-то там все операции над коллекциями возвращают List?
 
1,111
47
420
А потом будешь Stream из чисел, чтобы заменить цикл. Да, это классно, можно ещё рекурсию использовать вместо цикла, как делается в Хаскелле. Классно тебе, а не компьютеру. Он, всё-таки, не может такое оптимизировать и т-т-т-о-о-ормо-з---ит
Шоб ты понимал for(i <- 1 to 3) {println(i)} после компиляции станет List[Int](1, 2, 3).foreach(println). Так что стрим это норма.
 

CumingSoon

Местный стендапер
1,634
12
269
Шоб ты понимал for(i <- 1 to 3) {println(i)} после компиляции станет List[Int](1, 2, 3).foreach(println). Так что стрим это норма.
Ок, для читаемости можно и сделать бесконечный поток чисел, а потом оттуда вытаскивать пару штук, затем их перебирать. Однако так сложилось, что это не совсем вяжется в парадигму JVM и будет тратить лишнюю память. Память=время=оптимизация. Да, 1 списка мало. Пока он не находится везде.
Алсо, тебе жалко 2 скобки ради понимания твоего кода? Сочувствую
 
Последнее редактирование:

CumingSoon

Местный стендапер
1,634
12
269
А что ты хочешь? Стримы как в жабке? Ну в котлине есть Sequence, удачи
Хочу, чтобы после операций map над Set мне возвращался Set. Имплиситы тут помогают. Я к чему? У них более глубокое применение, нежели допиливать extension методы. Не думаю, что труекодеры на Скале используют имплиситы для того, чтобы можно было писать "receiver.func()"
 
1,111
47
420
Ок, для читаемости можно и сделать бесконечный поток чисел, а потом оттуда вытаскивать пару штук, затем их перебирать. Однако так сложилось, что это не совсем вяжется в парадигму JVM и будет тратить лишнюю память. Память=время=оптимизация. Да, 1 список мало. Пока он не находится везде.
Да и тебе жалко 2 скобки ради понимания твоего кода? Сочувствую
Екарный насос. В данном случае я не исполняю println а передаю его как параметр типа Any => Unit. И посмотри методы коллекций типа toArray.
 

CumingSoon

Местный стендапер
1,634
12
269
Екарный насос. В данном случае я не исполняю println а передаю его как параметр типа Any => Unit. И посмотри методы коллекций типа toArray.
Не понял.
Алсо, я не кодер и смотреть мне нечего
 
Сверху