标签: optional

Case Class Option 参数的不明确的隐式值

我正在做一些我在案例类和类型类上发明的练习。我遇到的问题之一如下:

object Example extends App {

  sealed trait Serializer[T] {
    def serialize(seq: List[T]): String
  }

  implicit object StringSerializer extends Serializer[String] {
    def serialize(seq: List[String]): String = seq.toString()
  }

  implicit object IntSerializer extends Serializer[Int] {
    def serialize(seq: List[Int]): String = seq.toString()
  }

  case class Marker[T: Serializer](lst: Option[List[T]] = None)
  
  Marker() // ambiguous implicit values: here...
}
Run Code Online (Sandbox Code Playgroud)

现在这给出了关于不明确的隐含值的错误。我认为这与我之前问过的一个问题有关(尽管是不同的错误消息):

在具有给定上下文绑定的嵌套列表中键入擦除

我是否正确,即使错误消息不同,这里的工作过程也是相同的?

types scala typeclass optional

0
推荐指数
1
解决办法
111
查看次数

Java 8 流 - 避免 NPE

我想从以下位置获取以下数据:

MyObject.builder()
    .lastUpdated(tuple.getT2().isEmpty() ? null : tuple.getT2().get(0).getLastUpdated().toInstant())
...
...
.build()
Run Code Online (Sandbox Code Playgroud)

tuple.getT2().get(0).getLastUpdated() 可以为空...

我试过:

.lastUpdated(
                        tuple.getT2().stream()
                            .map(Optional::ofNullable)
                            .findFirst()
                            .flatMap(Function.identity())
                            .map(metadata -> metadata.getLastUpdated().toInstant()) //NPE
                            .orElse(null))
Run Code Online (Sandbox Code Playgroud)

但我得到了 NPE

.map(metadata -> metadata.getLastUpdated().toInstant())
Run Code Online (Sandbox Code Playgroud)

java optional java-stream

0
推荐指数
1
解决办法
63
查看次数

在 Java 选项中加入流中的所有子集

这是原始代码:

Set<StatuteType> statuteTypes = registration.getStudent().getStudentStatutesSet()
    .stream()
    .map(StudentStatute_Base::getType)
    .collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)

我想将所有内容都包装在 Optional 中以避免空指针和所有内容。如果学生不存在或法规集不存在。

我拥有的:

Set<StatuteType> statuteTypes = Optional.of(registration)
            .map(Registration_Base::getStudent)
            .map(student -> student.getStudentStatutesSet())
            .flatMap(Collection::stream)
            .map(StudentStatute_Base::getType)
            .collect(Collectors.toSet())
            .orElse(null);
Run Code Online (Sandbox Code Playgroud)

这样的事情有可能吗?我想避免在这个链中检查空值,如果有空值,也只返回一个简单的空值,而不是得到一个异常。

通常,我认为合乎逻辑的是使用此处描述flatMap,但在这种情况下似乎不正确,因为 Optional flatmap 返回一个 Optional。

java optional

0
推荐指数
1
解决办法
77
查看次数

为什么 java 的 orElse 块总是被执行?

我在玩 Java 的 Optional 并认为它就像一个 if else 块。但是在下面的代码中,即使name变量不是执行块null的内容orElse。有什么解释吗?

import java.util.Optional;

class Scratch {
  public static void main(String[] args) {
    String name = "some text";
    System.out.println(
    Optional.ofNullable(name)
        .map(n -> mapped())
        .orElse(getOrElse()));

  }
  static String mapped(){
    System.out.println("mapped -- block executed");
    return "mapped";
  }
  static String getOrElse(){
    System.out.println("orElse -- block executed");
    return "orElse";
  }
}

Run Code Online (Sandbox Code Playgroud)

输出:

mapped -- block executed
orElse -- block executed
mapped
Run Code Online (Sandbox Code Playgroud)

java lambda function optional

0
推荐指数
1
解决办法
131
查看次数

我如何获得一个非空的可选项,其中的值是默认构造的?

假设我有一个默认构造的,因此为空ov的 type对象std::optional<std::vector<int>>

是的,std::vector可以在没有帮助的情况下表达空虚的概念std::optional,但请耐心等待。

然后让我们说,基于某种逻辑,我决定我必须用一个向量填充它,我想在这个向量上push_back一个一个元素。我该怎么办?

在我看来,以下内容有点难看:

ov = decltype(ov)::value_type{};
ov.push_back(/* something */);
ov.push_back(/* something else */);
Run Code Online (Sandbox Code Playgroud)

这真的是解决问题的方法吗?

c++ default-constructor optional c++17

0
推荐指数
1
解决办法
58
查看次数

在谓词中添加两个可选项

我必须用 Java编写一个Predicate,我可以在其中查询 predicate 的输入以获取两个Optional<Integer>对象。我必须根据两个 Optionals 的组合值返回 true 或 false。除了检查isPresent()然后get()这些值并添加之外,还有什么更好的方法可以做到这一点。

// Here assuming the comparingValue and integer1 and integer2 are all initialised with values.
// The isGreaterOrEqual function has an implementation.

int comparingValue;
Optional<Integer> integer1;
Optional<Integer> integer2;
if (integer1.isPresent() && integer2.isPresent()) 
    return isGreaterOrEqual(comparingValue, integer1.get() + integer2.get());
if (integer1.isPresent())
    return isGreaterOrEqual(comparingValue, integer1.get());
else if (integer2.isPresent()) 
    return isGreaterOrEqual(comparingValue, integer2.get());
else
    return false;

Run Code Online (Sandbox Code Playgroud)

java optional

0
推荐指数
1
解决办法
87
查看次数

如何在 Java 8 中使用 Optionals 编写代码

我有一个这样的代码。怎样才能更正确地改写它?

Optional<String> getNameBySiiPriorityInfo(Optional<SiiPriorityInfo> siiPriorityInfo){
    return siiPriorityInfo.isPresent() ? Optional.ofNullable(siiPriorityInfo.get().getName()) : Optional.empty();
}
Run Code Online (Sandbox Code Playgroud)

java optional

0
推荐指数
1
解决办法
49
查看次数

数组索引超出范围 - 可选解除绑定时出错

我有一个名为type Settings的属性调用的实体,如果它是1,那么视图控制器将具有白色背景,如果为0,则背景为深灰色.backgroundColorInt

但是在尝试打开视图控制器时出现以下错误;

致命错误:数组索引超出范围

对于我的函数中的以下行

    if settingsArray.count == 1 {
        setting = settingsArray[1]
    } else if settingsArray.count <= 0 {
      println("No settings in array")
    }
Run Code Online (Sandbox Code Playgroud)

查看控制器

var settingsArray: [Settings]! 
var setting: Settings!
var backgroundSetting: Bool = true

override func viewWillAppear(animated: Bool) {
    backgroundSettings()
}

override func viewDidLoad() {
    super.viewDidLoad()
    backgroundSettings()
}

// Function to fetch settings and change background
func backgroundSettings() {

    var error: NSError?
    let request = NSFetchRequest(entityName: "Settings")
    self.settingsArray = moc?.executeFetchRequest(request, …
Run Code Online (Sandbox Code Playgroud)

arrays core-data optional ios swift

-1
推荐指数
1
解决办法
397
查看次数

消除力量展开的最佳方法

var recorder : Recorder? = nil

func startAudioRecording() {
    if recorder == nil {
        recorder = Recorder()
    }
    if !recorder!.isRunning() {
        recorder?.startRecording({ [weak self] audioData in
            self?.remoteInterface?.sendVoice(audioData.0)
        }, withCompletionBlock: { (_) in })
    }
}

func stopAudioRecording(_ keyCommand: String!){
    if let _ = recorder {
        if(recorder?.isRunning())! {
            recorder?.stopRecording(completionBlock: { (isFinished: Bool) in
                DispatchQueue.global().asyncAfter(deadline: DispatchTime.now() + Double(Int64(1 * NSEC_PER_MSEC)) / Double(NSEC_PER_SEC), execute: { [unowned self] in
                    self.remoteInterface?.sendTouchUp(keyCommand)
                    self.audioRecorder = nil
                })
            })
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我们如何解除力量打开?

optional ios swift forceunwrap

-1
推荐指数
1
解决办法
378
查看次数

如何将任何类型的值传递给函数

因此,从本质上讲,我希望能够将多个参数传递给一个函数。其中之一是可选的,我也希望它采用任何类型的变量。

我该怎么做才能做到这一点呢?

public new object Session (String strSession, Type objValue = null)
{
    // Execute logic
}
Run Code Online (Sandbox Code Playgroud)

要么

public new object Session <T> (String strSession, objValue<T> = null) 
{
    // Execute logic
}
Run Code Online (Sandbox Code Playgroud)

不明白为什么这被否决了。我提供了清晰的代码段,不是吗?

c# model-view-controller asp.net-mvc types optional

-1
推荐指数
1
解决办法
46
查看次数