Передать значения кортежа как праметры в proc - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть pro c с именем:

proc fill(image: Pixels, r, g, b, a: uint8, для которого нужно передать 4 значения uint8 в качестве параметров для заполнения изображения цветом.

У меня также есть кортеж называется зеленым: let green = (0.uint8, 255.uint8, 0.uint8, 255.uint8)

Я могу sh Я мог бы назвать профи c следующим образом: image.fill(green), но это ошибки с несоответствием типов. Есть ли более элегантный способ, чем писать ìmage.fill(green[0], green[1], green[2], green[3])?

1 Ответ

1 голос
/ 15 апреля 2020

Вероятно, самый простой подход - заключить функцию fill() в другую функцию, которая принимает аргумент кортежа. Примерно так будет работать, перегружая fill() для получения новых типов аргументов, при условии, что возвращаемые типы fill() и перегруженные fill() совпадают:

proc fill(image: Pixels, color: tuple[r, g, b, a: uint8]): void =
  fill(image, color.r, color.g, color.b, color.a)

Затем вызывается fill() с аргумент кортежа вызовет соответствующую версию:

myImage.fill(green)
...