所以,我想在我的项目中添加一个外部库.图书馆本身很小,大约有300种方法.但它配置为非常自由的,它的proguard配置.我在一个准系统项目中使用/不使用库和/不使用proguard运行了一个简单的测试,这就是我想出来的
Proguard Lib Method Count
N N 15631
Y N 6370
N Y 15945
Y Y 15573
Run Code Online (Sandbox Code Playgroud)
如您所见,启用proguard后,计数为~6000.但是当我添加lib时,尽管库本身只有大约300种方法,但计数却达到了大约15000.
所以我的问题是,如何忽略这个特定库的proguard配置?
更新:
现在无法使用android gradle插件.我找到了没有优先权的android bug.请在提及"不可能"时避免回答,并在可能的解决方法或官方决定之前保持问题开启.否则,你将收集一半的赏金而不增加价值.谢谢!
说我有以下定义
data Book = Book {id :: Int, title :: String}
type Shelf = [Book]
Run Code Online (Sandbox Code Playgroud)
假设我有一个假设函数(upd用于更新)
updShelf :: Shelf -> Shelf
updShelf all@(book : books) = updBook book : updShelf books
Run Code Online (Sandbox Code Playgroud)
到目前为止都很好.现在让我们说updateBook函数需要在它之前参考更新的书籍三本书,即书架中位置5的bookBook for book需要参考位置2的书(假设前三本书不需要这样的参考更新).没问题,我说,并修改我的代码:
updShelf :: Shelf -> Shelf
updShelf all@(book : books) prevBook = updBook book prevBook : updShelf books
where prevBook = ???
Run Code Online (Sandbox Code Playgroud)
我需要帮助的是prevBook功能.虽然我甚至不确定我是否正确地接近这个问题.所以,如果你们有任何更好的建议以不同的方式解决这个问题,我们将非常感激
编辑:
Thomas M. DuBuisson:你的解决方案对我不起作用.原因如下:假设初始货架(全部)状态为
Book {id=1, title="a"}
Book {id=2, title="b"}
Book {id=3, title="c"}
Book {id=4, title="d"}
Book {id=5, title="e"}
Book …Run Code Online (Sandbox Code Playgroud) 我正在实现支持资源所有者密码凭据授权流的OAuth服务器.一旦我生成访问令牌,我应该在将令牌存储到数据库之前对其进行哈希处理吗?我主要担心的是,如果令牌请求在我生成令牌并将其与用户名/密码组合相关联后第二次出现,那么就不可能将令牌发送回来,因为它已被哈希处理.我应该在这种情况下抛出错误吗?RFC对此保持沉默.
当我发出GET请求时,我得到200 OK和etag标题:
etag ? "tZIZl_M15FKLVh9sN6Nj0iz1dQE/fA5Fya8Zz6DLGJwPNnIWbruyt30"
Run Code Online (Sandbox Code Playgroud)
在我随后的请求中,我发送了
If-Not-Modified ? "tZIZl_M15FKLVh9sN6Nj0iz1dQE/fA5Fya8Zz6DLGJwPNnIWbruyt30"
Run Code Online (Sandbox Code Playgroud)
标头,但端点仍然发回200 OK而不是304.
如何让我的端点遵守If-Not-Modified标头?使用云端点进行缓存的文档不存在:/
我有一个动物类定义为
case class Animal(name: String, properties: List[String])
Run Code Online (Sandbox Code Playgroud)
给定一个动物列表,我想要一张来自属性的地图 -> 满足该属性的动物列表
举个例子,如果我输入的是,
List(
Animal("Dog",
List("has tail",
"can swim",
"can bark",
"can bite")),
Animal("Tuna",
List("can swim",
"has scales",
"is edible")),
Animal("Black Mamba",
List("has scales",
"is venomous",
"can bite"))
)
Run Code Online (Sandbox Code Playgroud)
输出应该是
Map(
"has tail" -> List(Dog)
"can swim" -> List(Tuna,Dog)
"can bark" -> List(Dog)
"has scales" -> List(Tuna,Snake)
"is edible" -> List(Tuna)
"is venomous" -> List(Snake)
"can bite" -> List(Dog,Snake)
)
Run Code Online (Sandbox Code Playgroud)
我对函数式编程还很陌生。我可以以命令式的方式做到这一点,但一直在努力想出一个功能性的解决方案。欢迎任何指点!:)
假设我有如下数据类型:
data Cell = Cell (Maybe Player)
data Board = Board [[Cell]]
Run Code Online (Sandbox Code Playgroud)
现在我想生成一个这样的递归函数:
genBoard :: [Cell] -> Board
genBoard [] = []
genBoard c = (take 3 c) : (genBoard $ drop 3 c) -- takes list of 9 Cells and gives 3x3 list of cells
Run Code Online (Sandbox Code Playgroud)
显然上面的代码失败了,因为(:)不能将[Cell]添加到Board,尽管从技术上讲,Board只不过是[[Cell]].我需要将Board作为单独的数据类型来为它提供我自己的show函数.
到目前为止,我提出的最好的是:
genBoardList :: [Cell] -> [[Cell]]
genBoardList [] = []
genBoardList c = (take 3 c) : (genBoardList $ drop 3 c)
boardListToBoard :: [[Cell]] -> Board
boardListToBoard [] = Board []
boardListToBoard …Run Code Online (Sandbox Code Playgroud) 我正在使用UISearchController作为导航栏的一部分,使用iOS 11中引入的新API.我在ViewController的viewDidLoad中以下列方式使用它
- (void)viewDidLoad {
[super viewDidLoad];
[_table setDataSource:self];
[_table setDelegate:self];
searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
[self.navigationItem setSearchController:searchController];
[self.navigationItem setHidesSearchBarWhenScrolling:NO];
[searchController.searchBar setBackgroundColor:[UIColor greenColor]];
}
Run Code Online (Sandbox Code Playgroud)
但是,搜索文本字段将呈现在搜索栏内的错误位置.请看下面的截图.
我检查了视图层次结构,发现搜索栏中的UISearchBarTextField对象(不能直接访问devs)的frame.y值为1,这可能导致此问题.我已经在iOS 11 beta 10和iOS 11 GM上测试了这个.
这是一个已知的问题?有没有解决这个问题?或者是我在我身上做错了什么?
任何帮助将不胜感激 (:
这是一个大学项目.教授告诉我们需要将neo4j用于图形数据库,由于POJO不能作为节点存储在neo4j中,我们也需要使用spring数据.听起来不错.当我真正编写代码时,我遇到的教程就是我的头脑.示例代码使用了注释,xml,bean和诸如此类的东西,而没有任何解释它们来自何处.我认为它们都是我没有经验的弹簧框架的一部分.那么在考虑春天neo4j之前我需要学习多少春天?我不能向我的教授寻求帮助,因为他是管理类型的人,他知道像技术这样的所有单词,但不知道它们是如何工作的.