我有一个元组的scala列表,按元组的第一个元素的降序排序。
我尝试了一些如下操作,可以从列表或List()
scala> val l = List((95,6),(10,2),(8,5))
l: List[(Int, Int)] = List((95,6), (10,2), (8,5))
scala> l.filterNot({case (x,y)=>x/5<2})
res6: List[(Int, Int)] = List((95,6), (10,2))
scala> l.filterNot({case (x,y)=>x/5<200})
res7: List[(Int, Int)] = List()
我想编写一个实用程序方法,它可以包装并返回List的第一个元素的Option类型,如果filterNot
没有将列表清空到List(),它将是一个元组。如果filterNot
给我List(),我只想返回None。如果filterNot
给了我一个List
项目,我想做选项(l(0))。我可以定期检查,除了我想知道如何以更实用的方式进行检查?
答案 0 :(得分:4)
更好的选择是使用List.find
来获取谓词并返回第一个匹配项:
C:\Users\mylib>coverage3 run -m unittest OpenFileMockTestCase.py -v
test_2_open_file_mock_oserror (OpenFileMockTestCase.OpenFileMockTestCase) ... starting open_file with testfile2.txt...
ERROR
======================================================================
ERROR: test_2_open_file_mock_oserror (OpenFileMockTestCase.OpenFileMockTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "c:\users\xti027\appdata\local\programs\python\python36\lib\unittest\mock.py", line 1179, in patched
return func(*args, **keywargs)
File "C:\Users\xti027\Documents\DataTool-Git\DataTool\DataLoaderConfig\OpenFileMockTestCase.py", line 14, in test_2_open_file_mock_oserror
mock_oserror.my_module.open_file('testfile2.txt')
File "c:\users\xti027\appdata\local\programs\python\python36\lib\unittest\mock.py", line 939, in __call__
return _mock_self._mock_call(*args, **kwargs)
File "c:\users\xti027\appdata\local\programs\python\python36\lib\unittest\mock.py", line 995, in _mock_call
raise effect
PermissionError: [Errno 1] Not Allowed
----------------------------------------------------------------------
Ran 1 test in 0.031s
FAILED (errors=1)
注意我将小于大于小于大于因为我们没有否定谓词。