我有此代码:
class Dev {
static final config = const {
'endpoints': const {
'signIn': '/v1/auth/sign_in',
},
'apiBaseUrl': 'localhost:3000'
};
}
我正在尝试访问config变量中的signIn属性,当我执行config ['endpoints']时,它可以正确访问该属性,但是当我尝试
var signInEndpoint = config['endpoints']['signIn'];
它不起作用,当我尝试
var endpoints = config['endpoints'];
var signInEndpoint = endpoints['signIn'];
我要如何正确访问变量中的signIn属性?
答案 0 :(得分:1)
这是因为extension Object {
func doubledPrice() -> Object {
return Object(
price1: price1 * 2,
price2: price2 * 2,
price3: price3 * 2,
price4: price4 * 2,
name: name, //we can't double a string
type: type,
quantitySold: quantitySold, //I've named the func assuming you won't double the quantitySold, obviously if that's not the desired behaviour then this needs to change
dateIntroduced: dateIntroduced //can't double a date
)
}
}
的值是endPoints
而不是Object
,请尝试以下操作:
dynamic
答案 1 :(得分:1)
@Juan您尝试了两种方法,
var signInEndpoint = config['endpoints']['signIn'];
可以根据@diegoveloper的建议进行修复
var endpoints = config['endpoints'];
var signInEndpoint = endpoints['signIn'];
可以像
一样固定Map endpoints = config['endpoints']; //Map<String, String> will be much better
var signInEndpoint = endpoints['signIn'];
其他信息:
我更喜欢不使用dynamic
类型,因为它只会产生运行时错误(对于动态/对象,不会产生编译时错误)。
在您的情况下,Dev.config
是Map<String, Object>
。可以将对象投射到任何地方,它将创建运行时错误。
因此,我对Dev
类进行了一些更改。请看看
class Dev {
static final Map<String, Map<String, String>> config = const {
'endpoints': const {
'signIn': '/v1/auth/sign_in',
'apiBaseUrl': 'localhost:3000'
},
};
}
var signInEndpoint = Dev.config['endpoints']['signIn'] //will work
或类似的
class Dev {
static final Map<String, String> endpoints = const {
'signIn': '/v1/auth/sign_in',
};
static final Map<String, String> config = const {
'baseUrl': 'localhost:3000',
'other': 'others'
};
}
var signInEndpoint = Dev.endpoints['signIn']