小编Tam*_*ane的帖子

如何将通用协议用作变量类型

假设我有一个协议:

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)

generics xcode ios swift

81
推荐指数
2
解决办法
3万
查看次数

Spring启动不会加载logback-spring.xml

我有一个示例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)显示,日志文件是空的.

我在这里做错了吗?

java spring logback spring-boot

16
推荐指数
2
解决办法
9377
查看次数

Orchard CMS高级主题

我计划使用Orchard CMS作为几个网站的基础,并希望广泛选择主题.画廊里的人也不错,但我想要一些与众不同的东西.你能告诉我有没有我购买任何主题和小部件/模块的地方.

asp.net orchardcms

7
推荐指数
1
解决办法
4799
查看次数

NoSQL数据库

在过去的几年里,我注意到对NoSQL DB的兴趣正在增加.发布了许多新的此类数据库:

您认为它取代关系模型的目标是什么?一般来说,您如何看待NoSQL的未来.

sql database couchdb mongodb nosql

6
推荐指数
1
解决办法
3850
查看次数

OSX和iOS共享swift模块

我已经创建了基于swift的Cocoa Touch Framework项目,TestLib然后我添加了Cocoa Framework名为的新目标TestLibOSX.当我在iOS应用程序上使用该框架时,似乎没有任何问题,但是当我创建OSX控制台应用程序时,XCode抱怨它无法找到TestLibOSX模块.我错过了什么吗?

PS 不一样:)

编辑:似乎这一定是可能的,因为我可以看到Lister以这种方式实现.

macos xcode objective-c ios swift

6
推荐指数
1
解决办法
1715
查看次数

文本框/文本区域内的下拉列表

我正在寻找与facebook中的朋友过滤器类似的东西.当您在文本区域中键入"@"时,它会显示要选择的朋友列表.我试图在文本框中搜索下拉列表,但无法找到我要查找的内容.

html javascript jquery user-interface

5
推荐指数
1
解决办法
6483
查看次数

并发SortedList或O(log n)并发集合

我需要从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)

.net c# asp.net-mvc caching

5
推荐指数
1
解决办法
6218
查看次数

如何以及在何处安全存储访问令牌

我知道这个问题已被多次询问,但坦率地说,我没有看到满足我的标准的答案.

所以我有一个ASP.NET WEB API,在提供用户/传递时发出访问令牌(JWT).目前请求来自SPA应用程序.我遇到的问题是存储访问令牌,以便可以从JavaScript重新发送到API.到目前为止,看起来有两个常见的选项

  • HTML5网上应用店
  • 饼干

但这些都不是真正安全的,因为它们没有受到XSS和CSRF的保护.最重要的是,它使令牌易于访问.

您建议的任何选项?

javascript c# asp.net jwt

5
推荐指数
1
解决办法
1106
查看次数

Azure Web应用偶尔会抛出CryptographicException:密钥集不存在

Identity Server在Azure上托管了一个Web应用程序。它.pfx的根目录中有一个文件用于签名。问题是,当新发布时,它可以很好地工作,但是一段时间后,它会开始抛出CryptographicException: Keyset does not exist.

基于CryptographicException的KeySet不存在,我认为这是一个文件访问问题,但是为什么突然之间的天蓝色却弄乱了文件访问。

c# asp.net azure identityserver4

5
推荐指数
1
解决办法
875
查看次数

在Swift中实现可枚举/集合类

我正在尝试实现类(实现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中实现可迭代类,那么正确的方法是什么?

swift

3
推荐指数
1
解决办法
895
查看次数

DB中的用户提要(可能是DynamoDb)

我正在考虑使用DynamoDB来生成用户Feed.我将使用PostId(Range)存储UserId(Hash).但我需要在数据库中保留最后3000个帖子.所以我正在考虑有一个后台任务来清理表格.这样做有道理吗?我不确定这种类型的范围查询是否能够合理地快速运行,因为我有大约25mln用户记录.

请建议可能有效的任何其他选项(redis中的扇出除外).

database amazon-web-services nosql amazon-dynamodb

2
推荐指数
1
解决办法
665
查看次数