C++ going functinonal – std::optional

Sometimes we want to write functions that may not always return a result. In these cases we can use the std::optional container. That’s a pretty good alternative to special magic values and exceptions.

#include <optional>
#include <string>
#include <sstream>
#include <iostream>

std::optional<int> TryParseInt(std::string input)
{
	std::stringstream parser(input);
	
	int result;
	parser >> result;
	
	if (parser.fail() || !parser.eof())
		return {};

	return result;
}

int main()
{
	std::cout << "nEnter a number: " << std::endl;

	std::string input;
	std::cin >> input;

	auto parseResult = TryParseInt(input);

	if (parseResult.has_value())
	{
		for (auto i = 0; i < parseResult; i ++)
		{
			std::cout << i << std::endl;
		}
	}
	else
	{
		std::cout << "Invalid number!" << std::endl;
	}
}

This approach make the code more readable, as the intent is expressed explicitly. Dont’t you think?

Compartilhe este insight:

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Elemar Júnior

Sou fundador e CEO da EximiaCo e atuo como tech trusted advisor ajudando diversas empresas a gerar mais resultados através da tecnologia.

Elemar Júnior

Sou fundador e CEO da EximiaCo e atuo como tech trusted advisor ajudando diversas empresas a gerar mais resultados através da tecnologia.

Mais insights para o seu negócio

Veja mais alguns estudos e reflexões que podem gerar alguns insights para o seu negócio:

The type EmbeddableDocumentStore is gone. But it does not mean that you have no good options to replace his functionality....
Uma das causas mais comuns para problemas de performance em .NET é o descuido com o Garbage Collector. Mesmo funções...
Nunca trabalhei em um circo, tampouco criei elefantes! Portanto, advirto que os “fatos” que lerá aqui foram relatados por amigos,...
Aqui, um registro da apresentação que realizei na abertura do IoT Weekend. O que você acha do que foi dito?
Não tenho ideia do número de vezes que escrevi uma função para retornar os valores mínimo e máximo de uma...
Eu sei que sou privilegiado, em última instância, por poder oferecer, através do meu trabalho, algo que a sociedade valoriza....
× Precisa de ajuda?