假设我有一个协议:
public protocol Printable {
typealias T
func Print(val:T)
}
Run Code Online (Sandbox Code Playgroud)
这是实施
class Printer<T> : Printable {
func Print(val: T) {
println(val)
}
}
Run Code Online (Sandbox Code Playgroud)
我的期望是我必须能够使用Printable变量来打印这样的值:
let p:Printable = Printer<Int>()
p.Print(67)
Run Code Online (Sandbox Code Playgroud)
编译器抱怨此错误:
"protocol'Printable'只能用作通用约束,因为它具有Self或相关的类型要求"
难道我做错了什么 ?有任何解决这个问题的方法吗 ?
**EDIT :** Adding similar code that works in C#
public interface IPrintable<T>
{
void Print(T val);
}
public class Printer<T> : IPrintable<T>
{
public void Print(T val)
{
Console.WriteLine(val);
}
}
//.... inside Main
.....
IPrintable<int> p = new Printer<int>();
p.Print(67)
Run Code Online (Sandbox Code Playgroud)
编辑2:我想要的真实世界的例子.请注意,这不会编译,但会呈现我想要实现的目标.
protocol Printable …Run Code Online (Sandbox Code Playgroud) 我有一个示例Spring Boot应用程序,它使用Logback进行日志记录.所以我logback-spring.xml在jar旁边配置日志记录,但是除非我用它指定它,否则它不起作用logging.config,例如:logging.config=logback-spring.xml.
我特地到春季启动忽视的logback-spring.xml它表明,这可能是因为已经有一个spring.xml地方,但把断点org.springframework.boot.logging.AbstractLoggingSystem.initializeWithConventions(LoggingInitializationContext, LogFile)显示,日志文件是空的.
我在这里做错了吗?
我计划使用Orchard CMS作为几个网站的基础,并希望广泛选择主题.画廊里的人也不错,但我想要一些与众不同的东西.你能告诉我有没有我购买任何主题和小部件/模块的地方.
在过去的几年里,我注意到对NoSQL DB的兴趣正在增加.发布了许多新的此类数据库:
您认为它取代关系模型的目标是什么?一般来说,您如何看待NoSQL的未来.
我正在寻找与facebook中的朋友过滤器类似的东西.当您在文本区域中键入"@"时,它会显示要选择的朋友列表.我试图在文本框中搜索下拉列表,但无法找到我要查找的内容.
我需要从ASP.NET MVC应用程序中缓存数据库中的大量数据,并希望使用SortedList.我知道.NET 4.0添加了并发集合,但没有排序集合.我当时正在考虑使用SynchronizedCollection,但是即使是读取它也是密集使用锁(如果我没有记错的话),所以我正在寻找其他选项.基本上我需要一个具有O(log n)访问复杂性的并发集合.
编辑 - 基于Greg答案的代码
void WrappedAdd(TKey k, TValue v)
{
var copy = new SortedList<TKey, TValue>(_sortedList);
copy.Add(k, v);
_sortedList = copy;
}
Run Code Online (Sandbox Code Playgroud) 我知道这个问题已被多次询问,但坦率地说,我没有看到满足我的标准的答案.
所以我有一个ASP.NET WEB API,在提供用户/传递时发出访问令牌(JWT).目前请求来自SPA应用程序.我遇到的问题是存储访问令牌,以便可以从JavaScript重新发送到API.到目前为止,看起来有两个常见的选项
但这些都不是真正安全的,因为它们没有受到XSS和CSRF的保护.最重要的是,它使令牌易于访问.
您建议的任何选项?
我Identity Server在Azure上托管了一个Web应用程序。它.pfx的根目录中有一个文件用于签名。问题是,当新发布时,它可以很好地工作,但是一段时间后,它会开始抛出CryptographicException: Keyset does not exist.
基于CryptographicException的KeySet不存在,我认为这是一个文件访问问题,但是为什么突然之间的天蓝色却弄乱了文件访问。
我正在尝试实现类(实现SequenceType),它似乎比我期望的有点复杂.在C#中我只需要实现IEnumerable并且" yield return"使它变得非常简单.在python中使用__iter__()和使用相同yield.但在斯威夫特,我不知道为什么它过于复杂.这是代码
class Nums : SequenceType{
let list = [1,2,3,4,5]
func generate() -> GeneratorOf<Int?> {
return GeneratorOf<Int?>{
for i in self.list{
return i
}
return nil
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我在调用它时,for-in它进入无限循环.
如果在swift中实现可迭代类,那么正确的方法是什么?
我正在考虑使用DynamoDB来生成用户Feed.我将使用PostId(Range)存储UserId(Hash).但我需要在数据库中保留最后3000个帖子.所以我正在考虑有一个后台任务来清理表格.这样做有道理吗?我不确定这种类型的范围查询是否能够合理地快速运行,因为我有大约25mln用户记录.
请建议可能有效的任何其他选项(redis中的扇出除外).