Menu
CoddyTech

Funções Lambda Parte 2

Parte da seção Lógica e fluxo do Journey de GDScript da Coddy. Lição 55 de 78.

Uma lambda de uma linha pode escolher seu resultado com o operador ternário, value_if_true if condition else value_if_false:

var check_age = func(age): return "Adult" if age >= 18 else "Minor"
print(check_age.call(20)) # Adult

Para mais de dois casos, encadeie uma segunda expressão ternária após else ou escreva a função lambda como um bloco com if e elif:

var grade = func(score):
	if score == 100:
		return "Perfect"
	elif score >= 60:
		return "Pass"
	return "Fail"
print(grade.call(75)) # Pass

Como uma lambda é um valor, você pode passá-la para uma função. Declare o parâmetro com o tipo Callable e execute-a com call():

func apply_twice(fn: Callable, value):
	return fn.call(fn.call(value))
print(apply_twice(func(n): return n + 3, 1)) # 7

Uma função nomeada pode ser passada da mesma forma: escreva seu nome sem parênteses, como em apply_twice(double, 5).

Métodos integrados também aceitam funções. sort_custom() ordena um array com uma função lambda que recebe dois elementos e retorna true quando o primeiro deve vir antes:

var scores = [40, 90, 75]
scores.sort_custom(func(a, b): return a > b)
print(scores) # [90, 75, 40]

Uma lambda pode ler as variáveis locais ao seu redor, mas copia seus valores quando é criada. Alterar uma dessas variáveis depois disso não afeta a lambda, e atribuir a ela dentro da lambda não altera a variável fora dela.

challenge icon

Desafio

Fácil

O programa lê um número inteiro. Crie uma lambda e armazene-a em uma variável chamada categorize_number. Ela recebe um número e retorna:

  • Positive se o número for maior que 0
  • Zero se o número for 0
  • Negative se o número for menor que 0

Chame-a com o número que você leu e imprima o resultado. Para a entrada 10, a saída é:

Positive

Experimente você mesmo

extends Node

func _ready():
	var number := int(OS.read_string_from_stdin())
	# Crie a função lambda categorize_number aqui

	# Chame-a com number e imprima o resultado
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e fluxo

Pratique por conta própria: Compilador de GDScript online