2017-10-04 25 views

回答

0

解決方法是在「單個元素列表」的末尾添加一個,

$array1: ("x": 1, "y": 1),; 
$array2: ("x": 1, "y": 1), ("x": 2, "y": 2); 

這將產生length的預期結果。


說明

考慮下面的代碼:

$array1: ("x": 1, "y": 1); 
$array2: ("x": 1, "y": 1), ("x": 2, "y": 2); 

.test1 { 
    width: length($array1); 
} 
.test2 { 
    width: length($array2); 
} 

$array1被定義爲薩斯地圖同時$array2被定義爲薩斯列表。當您調用length函數時,它的行爲將與您已經猜到的不同。

  • length($array1)將產生2,因爲地圖有兩個鍵值對。
  • length($array2)將產生2,因爲該列表有兩個值。

因此,攻擊薩斯是強制$array1評估爲列表而不是地圖。你可以用最後的神奇懸掛,來做到這一點。

+0

如何向數組添加逗號(我無法添加,因爲您在真實應用程序中顯示)?請查看更新後的鏈接 –

+0

@YuryHomenok你不需要重新定義你的變量,但是在自己定義的末尾添加',':'$ array1:(「x」:1,「y」: 1),;' –

+0

我明白你的意思,但是我沒有像例子那樣的靜態聲明。數組來自服務器,我不知道它的長度是多少。所以,我可以添加一個逗號或永不添加逗號。實際上,我似乎能夠確定何時添加逗號 - 我檢查一種變量,如果它是一張地圖,然後添加一個逗號,如果不是地圖,則不要修改變量。 –

相關問題