函式值
- Dart Sass
- ✓
- LibSass
- 自 3.5.0 版本起
- Ruby Sass
- 自 3.5.0 版本起
相容性(參數類型)
在舊版的 LibSass 和 Ruby Sass 中,call()
函式接受一個表示函式名稱的字串。為了新的模組系統(其中函式不再是全域的,因此給定的名稱可能並不總是引用相同的函式)做準備,這已更改為接受函式值。
將字串傳遞給 call()
在所有實現中仍然有效,但已被棄用,並將在未來的版本中被禁止。
函式也可以是值!您不能直接將函式寫成值,但您可以將函式的名稱傳遞給 meta.get-function()
函式以將其作為值取得。取得函式值後,您可以將其傳遞給 meta.call()
函式來呼叫它。這對於編寫呼叫其他函式的 *高階函式* 非常有用。
SCSS 語法
@use "sass:list";
@use "sass:meta";
@use "sass:string";
/// Return a copy of $list with all elements for which $condition returns `true`
/// removed.
@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 語法
@use "sass:list"
@use "sass:meta"
@use "sass:string"
/// Return a copy of $list with all elements for which $condition returns `true`
/// removed.
@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 輸出
.content {
font-family: Tahoma, Geneva, Arial, sans-serif;
}