forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   BlitzMax (http://forum.boolean.name/forumdisplay.php?f=104)
-   -   функции (http://forum.boolean.name/showthread.php?t=18391)

ant0N 22.07.2013 16:11

функции
 
Привет всем! :)
у меня есть тип с методами и функциями:
Код:

Type Ololo Extend Trololo
  field r

  method update()
      'тут всякие вычисления, от них зависит
      ' result будет ложным или правдивым
  end method

  function CreateOlolo:Ololo(result:boolean)
      local o:Ololo = new Ololo
      o.r = result
      ....
      return o
  end function
end type

как сделать так, чтобы можно было передавать в фу-ю значение, и после обработки функция бы возвращала бы его как: result = true или result = false?
Код:

Ololo.CreateOlolo(blablabla:Boolean)
xText(0,0,blablabla) ' должно быть true или false


Reizel 22.07.2013 16:15

Ответ: функции
 
int ptr кури

ant0N 22.07.2013 17:00

Ответ: функции
 
покурил. Не помогло....
Можно немного подробнее?

Nex 22.07.2013 17:05

Ответ: функции
 
К примеру так можно если таких объектов не много.

Код:

Type Ololo Extend Trololo
  field r

  method update()
      'тут всякие вычисления, от них зависит
      ' result будет ложным или правдивым
  end method

  function CreateOlolo:Ololo(result:boolean)
      local o:Ololo = new Ololo
      o.r = result
      ....
      return o
  end function
end type

Код:

bla = CreateOlolo(blablabla:Boolean)
xText(0,0,bla.r) ' должно быть true или false

Если много, то сделать еще одну проверочную переменную и церез цикл проверять.

ant0N 22.07.2013 17:20

Ответ: функции
 
Nex, так пробовал... выдает 1, причем с каждым вызовом этой фу-ии, увеличивается на единицу

ant0N 22.07.2013 17:24

Ответ: функции
 
только я делал так
Код:

bla = CreateOlolo(blablabla:Boolean)
xText(0,0,bla)

А как ты предложил вообще ошибку выдает

Nex 22.07.2013 17:29

Ответ: функции
 
Значит что то не то делаешь.
bla = CreateOlolo(blablabla:Boolean) - содержит номер элемента.
bla.r - получаем доступ в нужному элементу и его параметру.
В функции Update () делай что тебе надо и присваивай полученный результат к переменной "r" типа r = vichislenie. И еще если вычисления не нужно делать постоянно, то можно высчитывать сразу в функции создания.

Nex 22.07.2013 17:43

Ответ: функции
 
А не. Че то у меня тоже не работает хотя должно работать. :-D

ant0N 22.07.2013 17:53

Ответ: функции
 
в общем объясню что за фун-я у меня.
Она поочередно выводит название клавиш, если успеваешь нажать на эти клавиши, то мне нужно как-то запустить другу функцию.

ant0N 23.07.2013 11:38

Ответ: функции
 
вопрос закрыт, разобрался сам. (сделал через жопу, зато работает)

Reizel 23.07.2013 12:10

Ответ: функции
 
стой, стой
Ща, я совсем забыл про твою тему. Сейчас..

Код:

Type Ololo
  Field r:Byte Ptr

  Method update()
      'тут всякие вычисления, от них зависит
      ' result будет ложным или правдивым

        Self.r[0] = Rand(0,1)
  End Method

  Function CreateOlolo:Ololo(result:Byte Ptr)
      Local o:Ololo = New Ololo
      o.r = result
      Return o
  End Function
End Type

Local blablabla:Byte
Local o:ololo = Ololo.CreateOlolo(Varptr blablabla)

While True
        Print blablabla
        o.update()
        Delay(1000)
Wend

твои объекты Ololo запоминают указатель на внешнюю переменную, и могут делать с ней чо угодно

ant0N 23.07.2013 12:47

Ответ: функции
 
Reizel, благодарствую! попробую и потом отпишусь


Часовой пояс GMT +4, время: 17:44.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot