Funções
- Sass de Dart
- ✓
- LibSass
- since 3.5.0
- Sass de Ruby
- since 3.5.0
Em versões antigas da LibSass e Sass de Ruby, a função call()
recebia uma sequência de caracteres representando um nome da função. Isto foi mudado para receber um valor de função em preparação para um novo sistema de módulo onde as funções não são mais globais e assim um dado nome talvez nem sempre se refere a mesma função.
A passagem de um sequência de caracteres para call()
ainda funciona em todas as implementações, mas está depreciada e será desautorizada em versões futuras.
As funções também podem ser valores! Tu não podes escrever diretamente uma função como um valor, mas podes passar um nome de função para a função meta.get-function()
para recebê-la como um valor. Assim que tiveres um valor de função, podes passá-lo para a função meta.call()
para chamá-la. Isto é útil para escrita de funções de ordem mais elevada que chamam outras funções:
SCSS Syntax
@use "sass:list";
@use "sass:meta";
@use "sass:string";
/// Retorna uma cópia de $list com todos os elementos para os quais $condition retorna `true`
/// removido.
@function remove-where($list, $condition) {
$new-list: ();
$separator: list.separator($list);
@each $element in $list {
@if not meta.call($condition, $element) {
$new-list: list.append($new-list, $element, $separator: $separator);
}
}
@return $new-list;
}
$fonts: Tahoma, Geneva, "Helvetica Neue", Helvetica, Arial, sans-serif;
.content {
@function contains-helvetica($string) {
@return string.index($string, "Helvetica");
}
font-family: remove-where($fonts, meta.get-function("contains-helvetica"));
}
Sass Syntax
@use "sass:list"
@use "sass:meta"
@use "sass:string"
/// Retorna uma cópia de $list com todos os elementos para os quais $condition retorna `true`
/// removido.
@function remove-where($list, $condition)
$new-list: ()
$separator: list.separator($list)
@each $element in $list
@if not meta.call($condition, $element)
$new-list: list.append($new-list, $element, $separator: $separator)
@return $new-list
$fonts: Tahoma, Geneva, "Helvetica Neue", Helvetica, Arial, sans-serif
.content
@function contains-helvetica($string)
@return string.index($string, "Helvetica")
font-family: remove-where($fonts, meta.get-function("contains-helvetica"))
CSS Output
.content {
font-family: Tahoma, Geneva, Arial, sans-serif;
}