[ 
https://issues.apache.org/jira/browse/TINKERPOP-2959?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17901998#comment-17901998
 ] 

ASF GitHub Bot commented on TINKERPOP-2959:
-------------------------------------------

andreachild commented on code in PR #2919:
URL: https://github.com/apache/tinkerpop/pull/2919#discussion_r1864000319


##########
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java:
##########
@@ -64,11 +68,40 @@ public class GraphStep<S, E extends Element> extends 
AbstractStep<S, E> implemen
     public GraphStep(final Traversal.Admin traversal, final Class<E> 
returnClass, final boolean isStart, final Object... ids) {
         super(traversal);
         this.returnClass = returnClass;
-        this.ids = (ids != null && ids.length == 1 && ids[0] instanceof 
Collection) ? ((Collection) ids[0]).toArray(new Object[((Collection) 
ids[0]).size()]) : ids;
+
+        // if ids is a single collection like g.V(['a','b','c']), then unroll 
it into an array of ids
+        this.ids = 
GValue.ensureGValues(tryUnrollSingleCollectionArgument(ids));
+
         this.isStart = isStart;
+
         this.iteratorSupplier = () -> (Iterator<E>) 
(Vertex.class.isAssignableFrom(this.returnClass) ?
-                this.getTraversal().getGraph().get().vertices(this.ids) :
-                this.getTraversal().getGraph().get().edges(this.ids));
+                
this.getTraversal().getGraph().get().vertices(GValue.resolveToValues(this.ids)) 
:

Review Comment:
   Nit: extract to variable to avoid looping over the `ids` twice:
   
   ```
   Object[] idValues = GValue.resolveToValues(this.ids);
           this.iteratorSupplier = () -> (Iterator<E>) 
(Vertex.class.isAssignableFrom(this.returnClass) ?
                   this.getTraversal().getGraph().get().vertices(idValues) :
                   this.getTraversal().getGraph().get().edges(idValues));
   ```





> Allow the grammar to support parameters
> ---------------------------------------
>
>                 Key: TINKERPOP-2959
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-2959
>             Project: TinkerPop
>          Issue Type: Improvement
>          Components: language
>    Affects Versions: 3.6.4
>            Reporter: Stephen Mallette
>            Assignee: Stephen Mallette
>            Priority: Major
>             Fix For: 3.7.0
>
>
> Allow the grammar to support parameters similar to how the groovy engine does 
> like, {{g.inject(x,y,z)}}. Doing this will make it easier for a transition 
> away from the groovy engine as a lot of Gremlin in the world today uses 
> parameters. The grammar may have to come with some limitations though as 
> groovy is wide open in terms of what can be treated as a variable. Probably 
> going to keep parameters tied to primitives, collections and tokens/enums 
> like {{Order}} and {{Scope}}. Collections themselves will not contain 
> parameters and things like a {{Traversal}} or {{P}} cannot be treated as one.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to