我有以下代码:
struct TestStruct2 {
let field1: String
let field2: Int
enum TestEnum2 {
case Value1
case Value2
}
}
let dic2 = Dictionary<TestStruct2.TestEnum2, TestStruct2>()
let dic3 = [TestStruct2.TestEnum2 : TestStruct2]()
dic2成功运作。
但是dic3会返回编译错误:
(Type of expression is ambiguous without more context)
我不明白为什么。任何想法?
答案 0 :(得分:1)
正如@Hamish在评论中提到的,这是一个编译器错误。您已经展示了一种使用长格式的解决方法:
typealias
第二种解决方法是为嵌套类型创建typealias TestStruct2Enum2 = TestStruct2.TestEnum2
let dic3 = [TestStruct2Enum2 : TestStruct2]()
:
typealias
第三种解决方法是创建整个字典的typealias Test2Dict = [TestStruct2.TestEnum2 : TestStruct2]
let dic4 = Test2Dict()
:
[:]
第四种解决方法是明确指定类型并使用let dic5: [TestStruct2.TestEnum2 : TestStruct2] = [:]
字面值初始化字典:
let dic6 = [:] as [TestStruct2.TestEnum2 : TestStruct2]
最后的解决方法是将文字转换为类型:
function my_custom_theme_style(){
$bodyColor = get_option('boon_body_color');
$paragraphColor = get_option('boon_paragraph_color');
return 'body{
color: ' . $bodyColor . ' !important;
}
p{
color: ' . $paragraphColor . ' !important;
}';
}
function add_custom_style(){
echo '<style type="text/css">';
echo my_custom_theme_style();
echo '</style>';
}
add_action('wp_enqueue_scripts', 'add_custom_style');