从List [Int,Int]返回scala中的(Int,Int)选项

时间:2017-09-23 14:49:41

标签: scala scala-collections

我有一个元组的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))。我可以定期检查,除了我想知道如何以更实用的方式进行检查?

1 个答案:

答案 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)

注意我将小于大于小于大于因为我们没有否定谓词。