Meta Engineer?

This is available as C\nfirst in the www repository.

Returns the first element of the given Traversable, or null if the Traversable is null or empty

namespace HH\Lib\C;

function nfirst<T>(
  ?Traversable<T> $traversable,
): ?T;
  • For non-null Traversables, see C\first.
  • For non-empty Traversables, see C\firstx.
  • For single-element Traversables, see C\onlyx.

Time complexity: O(1) Space complexity: O(1)



  • ?T


$strings = vec["a", "b", "c"];
$first_string = C\nfirst($strings);
echo "First string in traversable: $first_string \n";
//Output: First string in traversable: a 

$empty_traversable = vec[];
$first_element = C\nfirst($empty_traversable);
$first_element_as_string = $first_element ?? "null";
echo "First element in empty traversable: $first_element_as_string";
//Output: First element in empty traversable: null